WSO2 ESB-如何使用XSLT介体检索具有xml标签的属性值,我得到它的'<'形式'<'

时间:2013-02-09 02:03:33

标签: wso2 wso2esb

我正在开发WSO2 ESB代理服务,需要完成XSLT转换,从xml获取一部分值并与另一个.dsb文件的结果结合

这是我的物业价值低于

*<xslt key="conf:/input/proxy_input_transform.xslt"/>
<property name="DETAILS" expression="//QUARTERLY_DATA" />
<QUARTERLY_DATA>
<ROW>
<SAP_CUST_ID>0000905133</SAP_CUST_ID>
<AOC_FLAG>N</AOC_FLAG>
<LOB>AppleCare</LOB>...."

但是在调用outsequence

中的.dbs文件后完成xlst
   <xslt key="conf:/output/proxy_output_transform.xslt" >
      <property name="details" expression value="get-property('DETAILS')"/>
   </xslt>

我在转换后的xml中获得了如下所示的值。

&lt;QUARTERLY_DATA>
&lt;ROW>
&lt;SAP_CUST_ID>0000905133&lt;/SAP_CUST_ID>
&lt;AOC_FLAG>N&lt;/AOC_FLAG>
&lt;LOB>AppleCare&lt;/LOB>....

我不确定为什么“&lt;”正在变为“&amp; lt;”。  有人可以就此发现他们的发现吗?  注意:我能够成功从属性中检索值,该值只有单个值而不是XML标记。在将xml放入消息上下文时,将属性中的类型设置为“OM”。 这是我的代理服务

    <?xml version="1.0" encoding="UTF-8"?>
 <proxy xmlns="http://ws.apache.org/ns/synapse" name="TQS_SIST_BILLING_PCH_N" transports="https http" startOnLoad="true" trace="enable" statistics="enable">
    <target>
    <inSequence onError="conf:/tqs/common/FaultHandler_Seq.xml">
        <property xmlns:sist="http://sist.tqs.ist.apple.com/sist_request" name="IN_SAP_SOLD_TO" expression="//sist:ACC_BILLING_REQ_PCH_FLAG_N/sist:CUST_SRCH_INPUT/sist:SAP_SOLD_TO"/>
        <xslt key="conf:/tqs/sist/billing_pch_n/proxy_input_transform.xslt"/>
          <property name="REQUEST" value="DETAILS_REQUEST"/>
            <property name="SAP_CUST_ID" expression="//ACC_BILLING_REQ_PCH_FLAG_N" type="OM"/>
                <send>
                    <endpoint key="conf:/tqs/sist/billing_pch_n/ds_endpoint.xml"/>
                </send>
     </inSequence>
    <outSequence onError="conf:/tqs/common/FaultHandler_Seq.xml">
        <switch source="get-property('REQUEST')">
            <case regex="DETAILS_REQUEST">
                <log level="custom">
                    <property name="sequence" value="outSequence - response from Details Service"/>
                </log>
                <property name="DETAILS" expression="//QUARTERLY_DATA"/>
                <log level="custom" separator=",">
                    <property name="DETAILS------at entry level" expression="get-property('DETAILS')"/>
                </log>
                <enrich>
                    <source type="property" clone="true" property="SAP_CUST_ID"/>
                    <target type="body"/>
                </enrich>
                <log level="full">
                    <property name="sequence" value="outSequence - request for Summary Service"/>
                </log>
                <property name="REQUEST" value="SUMMARY_REQUEST"/>
                <send>
                    <endpoint key="conf:/tqs/sist/billing_pch_n/ds_summary_endpoint.xml"/>
                </send>
            </case>
            <case regex="SUMMARY_REQUEST">
                <log level="full">
                    <property name="sequence" value="outSequence  - response from Summary Service"/>
                </log>
                <log level="custom" separator=",">
                    <property name="DETAILS------222222" expression="get-property('DETAILS')"/>
                </log>
                <xslt key="conf:/tqs/sist/billing_pch_n/proxy_output_transform.xslt">
                    <property name="details" expression="get-property('DETAILS')"/>
                </xslt>
                <send/>
            </case>
        </switch>


    </outSequence>
</target>

2 个答案:

答案 0 :(得分:0)

我认为问题出在您的xslt中,您可以使用“输出方法”作为文本。使用output method="xml"

例如:<xsl:output method="xml" version="1.0" encoding="UTF-8" />

答案 1 :(得分:0)

您是否可以通过直接访问配置的.xml文件来尝试编辑配置文件。只需使用文本编辑器进行所有配置编辑,然后尝试运行您的方案。有时,当您在管理控制台中编辑配置时,配置文件中会包含此类字符。你能尝试一下吗?