0

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

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

到内联部分中的 WSO2 XML 格式化程序?我看到该标签总是在标签"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.

//更新

我的格式化程序看起来像:

<?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"?>不见了?

4

2 回答 2

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"

于 2015-04-24T12:08:52.913 回答
0

不可以。?xml 文本声明必须出现在文件的开头:

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

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

从您的编辑来看,您似乎希望输出文档包含声明。控制这一点的唯一方法是通过外部eventFormatter配置。该文档没有显示执行此操作的方法

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

于 2015-04-20T11:22:16.993 回答