Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Data Power XSLT中将CDATA转换为XML_Xml_Xslt - Fatal编程技术网

在Data Power XSLT中将CDATA转换为XML

在Data Power XSLT中将CDATA转换为XML,xml,xslt,Xml,Xslt,我有一个请求消息,其中所需字段位于CDATA中,我需要检索这些字段并创建一个新请求,然后将其发送到Data power中的后端 请求消息: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://example.com/456/" xmlns:soapenv1="http://example.com/ns1/CIP_Request.xsd"> &

我有一个请求消息,其中所需字段位于CDATA中,我需要检索这些字段并创建一个新请求,然后将其发送到Data power中的后端

请求消息:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://example.com/456/" xmlns:soapenv1="http://example.com/ns1/CIP_Request.xsd">
    <soapenv:Header/>
    <soapenv:Body>
        <ns1:InqAccts>
            <ns1:reqxml>
                <![CDATA[<?xml version="1.0" encoding="utf-8"?><CIP_Request schemaVersion="3.0" xmlns="http://example.com/456/CIP_Request.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><UUID>97538E5A-ED0D-6A2F-97D86FE4DEEB6698</UUID><ClientCode>AND</ClientCode><InqDetails><AID>138716123</AID><CID>12345</CID><Desc>Sample</Desc></InqDetails></CIP_Request>]]></ns1:reqxml>
        </ns1:InqAccts>
    </soapenv:Body>
</soapenv:Envelope>

97538E5A-ED0D-6A2F-97D86FE4EEB6698和13871612312345样本]]>
XSLT:

<xsl:stylesheet version="1.0" extension-element-prefixes="dp" exclude-result-prefixes="dp xalan" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
xmlns:dp="http://www.datapower.com/extensions" 
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:ns1="http://example.com/456/" 
 xmlns:ns="http://output.com/123/" 
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="xml" encoding="UTF-8" indent="yes"/>

    <xsl:variable name="result" select="//soapenv:Envelope/soapenv:Body/nao:InqAccts/nao:reqxml"/>

    <xsl:variable name="xmlResult">
        <dp:serialize omit-xml-decl="yes" select="//nao:reqxml" disable-output-escaping="yes" />
    </xsl:variable>

    <xsl:variable name="AID" select="$xmlResult//InqDetails/AID"/>
    <xsl:variable name="CID" select="$xmlResult//InqDetails/CID"/>
    <xsl:variable name="DESC" select="$xmlResult//InqDetails/Desc"/>

    <xsl:template match="/">
        <soapenv:Envelope>
            <soapenv:Header/>
            <soapenv:Body>
                <ns:DetailsGetRq>
                    <DetailAID>
                        <xsl:value-of select="$AID"/> 
                    </DetailAID>
                    <DetailCID>
                        <xsl:value-of select="$CID"/>
                    </DetailCID>
                    <desc>
                        <xsl:value-of select="$DESC"/>
                    </desc>
                </ns:DetailsGetRq>
            </soapenv:Body>
        </soapenv:Envelope>
    </xsl:template>

</xsl:stylesheet>

我正在寻找的转换请求如下:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:ns1="http://example.com/456/" 
 xmlns:ns="http://output.com/123/" >
    <soapenv:Header />
    <soapenv:Body>
        <ns:DetailsGetRq>
            <DetailAID>138716123</DetailAID>
            <DetailCID>12345</DetailCID>
            <desc>Sample</desc>
        </ns:DetailsGetRq>
    </soapenv:Body>
</soapenv:Envelope>

138716123
12345
样品
我需要帮助将CDATA值解析为XML并从中检索字段值

请务必让我知道进行相同操作的方法


谢谢

您的输入XML已损坏。CDATA根本不应该在那里。与其解决这个问题,我强烈建议修复输入。我无法编辑输入消息,reqxml在我们使用它的应用程序团队提供的XSD和WSDL中定义为字符串。我已经更新了输入消息让我知道我们有什么办法可以做到吗?所以你没有办法去你自己的应用程序团队告诉他们应该修复这个错误?那太可悲了。那么你必须按照这里建议的方式来做: