WSO2 CEP 格式化程序 "The processing instruction target matching "[xX][mM][lL]“不允许”
WSO2 CEP Formatter "The processing instruction target matching "[xX][mM][lL]" is not allowed"
是否可以添加类似的内容:
<?xml version="1.0" encoding="UTF-8"?>
到 WSO2 XML 内联 部分中的格式化程序?
我看到标签总是添加在标签 "eventFormatter" 之前,但是当我通过 CEP 传递事件并在我的队列中得到答案时,输出 XML 没有没有这个标签。
如果我想在 inline 部分添加它,我会收到此错误:
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"?>
不见了?
没有。 ?xml
text 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 在没有声明的情况下已经是默认值,因此可以省略。
似乎 WSO2CEP 3.x 在使用带有 <?xml version="1.0" encoding="UTF-8"?>
标签的 XML 映射时无法格式化消息。
解决方法是使用文本映射,如下所示
<?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"。
是否可以添加类似的内容:
<?xml version="1.0" encoding="UTF-8"?>
到 WSO2 XML 内联 部分中的格式化程序? 我看到标签总是添加在标签 "eventFormatter" 之前,但是当我通过 CEP 传递事件并在我的队列中得到答案时,输出 XML 没有没有这个标签。
如果我想在 inline 部分添加它,我会收到此错误:
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"?>
不见了?
没有。 ?xml
text 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 在没有声明的情况下已经是默认值,因此可以省略。
似乎 WSO2CEP 3.x 在使用带有 <?xml version="1.0" encoding="UTF-8"?>
标签的 XML 映射时无法格式化消息。
解决方法是使用文本映射,如下所示
<?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"。