2015-04-20 2 views
0

Можно ли добавить что-то вроде этого:WSO2 СЕР Formatter "Инструкция обработки целевого соответствия "[хХ] [мм] [Ll]" не допускается"

<?xml version="1.0" encoding="UTF-8"?> 

в WSO2 XML Formatter в инлайн раздел? Я вижу, что тег всегда добавляется перед тегом «eventFormatter», но когда я передаю событие через CEP, и я получаю ответ в своей очереди, выходной XML не имеет этого тега.

Если я хочу добавить его в рядный разделе я получаю эту ошибку:

Failed to update event formatter, Exception: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[7,10] Message: The processing instruction target matching "[xX][mM][lL]" is not allowed. 

// Udpate

Мои Formatter выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
<eventFormatter name="Formatter_XML_Out" statistics="disable" 
    trace="disable" xmlns="http://wso2.org/carbon/eventformatter"> 
    <from streamName="Test_stream_out_xml" version="1.0.0"/> 
    <mapping customMapping="enable" type="xml"> 
     <inline> 
      <Event> 
       <Name>{{Name}}</Name> 
       <Surname>{{Surname}}</Surname> 
      </Event> 
     </inline> 
    </mapping> 
    <to eventAdaptorName="ActiveMQ_Output" eventAdaptorType="jms"> 
     <property name="transport.jms.Destination">myQueue</property> 
    </to> 
</eventFormatter> 

Я получаю это в выходном сообщении:

<Event> 
    <Name>XXXX</Name> 
    <Surname>YYYYY</Surname> 
</Event> 

Почему этот тег <?xml version="1.0" encoding="UTF-8"?> отсутствует?

+1

Объявление XML является необязательным, если вы используете кодировку UTF-8, поскольку это значение по умолчанию. –

ответ

1

Похоже, что WSO2CEP 3.x не может форматировать сообщение при использовании сопоставления XML с тегом <?xml version="1.0" encoding="UTF-8"?>.

Обойти это можно использовать отображение текста вместо следующего

<?xml version="1.0" encoding="UTF-8"?> 
<eventFormatter name="Formatter_XML_Out" statistics="disable" 
    trace="disable" xmlns="http://wso2.org/carbon/eventformatter"> 
    <from streamName="Test_stream_out_xml" version="1.0.0"/> 
    <mapping customMapping="enable" type="text"> 
     <inline> 
      <![CDATA[ 
      <?xml version="1.0" encoding="UTF-8"?> 
      <Event> 
       <Name>{{Name}}</Name> 
       <Surname>{{Surname}}</Surname> 
      </Event> 
      ]]> 
     </inline> 
    </mapping> 
    <to eventAdaptorName="ActiveMQ_Output" eventAdaptorType="jms"> 
     <property name="transport.jms.Destination">myQueue</property> 
    </to> 
</eventFormatter> 

использования типа = "текст" здесь.

0

порядка № ?xmltext declaration должен появиться в начале документа:

The text declaration MUST NOT appear at any position other than the beginning of an external parsed entity.

Это обеспечивается с помощью XML-анализаторами.

Из вашего редактирования, похоже, вы хотите, чтобы ваш выходной документ включал объявление. Единственный способ контролировать это - через внешнюю конфигурацию eventFormatter. documentation doesn't show a way to do this.

Однако нет необходимости в этом - UTF-8 уже по умолчанию в отсутствии объявления, поэтому его можно опустить.

+0

Thx, для вашего воспроизведения. Я знаю, что этот тег должен быть первым, и он находится в моем форматировании CEP, но в выходном XML-сообщении этот тег ушел, и я не знаю почему. Может, кто-то знает почему? Может быть, есть обходной путь, чтобы получить этот тег в моем выходном XML-сообщении? – Kacu

+0

Да, я знаю, что в этой документации по КЭП не показано, как это сделать, поэтому я ищу способ обхода (если это вообще возможно). Thx за помощью. – Kacu

+0

Обратите внимание, что «нет необходимости в этом» - если вы считаете, что вам это нужно, добавьте объяснение к своему вопросу, так как может быть альтернатива. – Joe

Смежные вопросы