小编Sha*_*kar的帖子

如何使用xslt解析另一个xml的CDATA内的xml?

我需要使用单个XSLT转换XML的CDATA内的XML.

我有一个XML,如下面的CDATA中的xml,如下面的xml.

    <message channel-id="e01db0aa-b3db-4b6c-a055-7a0d5c1d1f20" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" >
    <send-parameters>
               <agent-parameter multi-valued="false">
                 <name>Networks</name>
                 <value><![CDATA[<Networks>
    <Network>
      <GroupCode>EXTPRI</GroupCode>
      <NetworkTypeId>LANI</NetworkTypeId>   
      <OrgNetworkPlatformName>EON-0cbu0cust12301dcd-D-PCL-0002</OrgNetworkPlatformName>
      <OrgNetworkPlatformID>urn:vcloud:network:b7ccfd5f-cfd7-48eb-9dd6-1989b08d7b86</OrgNetworkPlatformID>
      </Network>
      <Network>
      <GroupCode>EXTPRI</GroupCode>
      <NetworkTypeId>LANI</NetworkTypeId>   
      <OrgNetworkPlatformName>ABC-0cbu0cust12301dcd-D-PCL-XYZ</OrgNetworkPlatformName>
      <OrgNetworkPlatformID>urn:vcloud:network:b7ccfd5f-cfd7-48eb-9dd6-1989b08d7b86</OrgNetworkPlatformID>
    </Network>

    </Networks>]]></value>
               </agent-parameter>

                        </send-parameters>
          </message>
Run Code Online (Sandbox Code Playgroud)

我需要将xml转换为:

    <?xml version="1.0" encoding="UTF-8"?>
    <message xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" channel-id="7652d759-4b32-44d4-8a27-9e390f0cae7b">
        <send-parameters>
            <agent-parameter multi-valued="false">
                <name>ExternalPublicOrgNWPlatformID_DDC</name>
                <value>EON-0cbu0cust12301dcd-D-PCL-0002</value>
            </agent-parameter>
                    <agent-parameter multi-valued="false">
                <name>ExternalPublicOrgNWPlatformID_DS</name>
                <value>ABC-0cbu0cust12301dcd-D-PCL-XYZ</value>
            </agent-parameter>
        </send-parameters>
    </message>
Run Code Online (Sandbox Code Playgroud)

这是我给出的示例输出,我需要遍历xml中的多个节点并生成输出xml.

我通过将xpath指向源xml的cdata内的节点来使用xslt.但它是空的,因为它不是树形结构格式.

我无法在CDATA中获取xml的X-Path.如果我在xml中删除CDATA,但是xml是从外部系统传入的,它是无法修改的.

我不能使用多个xslts我需要应用单个XSLT.

你能否就此提出建议?

非常感谢期待..

xslt xsl-fo xslt-2.0 xslt-1.0

6
推荐指数
1
解决办法
8099
查看次数

标签 统计

xsl-fo ×1

xslt ×1

xslt-1.0 ×1

xslt-2.0 ×1