WSO2 CEP格式化程序"处理指令目标匹配" [xX] [mM] [lL]"不允许"

时间:2015-04-20 10:19:48

标签: xml xml-parsing wso2 wso2cep

是否可以添加类似的内容:

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

内联部分的WSO2 XML Formatter? 我看到标签总是在标签&#34; eventFormatter&#34; 之前添加,但是当我通过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

我的格式化程序如下:

<?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"?>已消失?

2 个答案:

答案 0 :(得分:1)

在使用带有<?xml version="1.0" encoding="UTF-8"?>标记的XML映射时,似乎WSO2CEP 3.x无法格式化消息。

解决方法是使用文本映射,如下所示

<?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>

在这里使用 type =“text”

答案 1 :(得分:0)

没有。 ?xml text declaration必须出现在文档的开头:

  

文本声明绝不能出现在外部解析实体开头以外的任何位置。

这是由XML解析器强制执行的。

在编辑中,您希望输出文档包含声明。控制它的唯一方法是通过外部eventFormatter配置。 documentation doesn't show a way to do this

但是,没有必要 - 在没有声明的情况下UTF-8已经是默认值,因此可以省略。