使用代码或XSLT从Soap响应中删除命名空间,属性,Xsi

时间:2016-07-05 09:09:12

标签: c# xml xslt

使用代码或XSLT

从Soap响应中删除名称空间,属性,Xsi

想要使用C#代码(Serializer,XMLDoc,XDoc)或XSLT将soap响应转换为普通的XML(没有名称空间,属性)。

这是肥皂反应。

            <?xml version="1.0" encoding="UTF-8"?>
            <SOAP-ENV:Envelope
                xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                xmlns:ns1="urn:Magento"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
                <SOAP-ENV:Body>
                    <ns1:catalogProductInfoResponse>
                        <info xsi:type="ns1:catalogProductReturnEntity">
                            <product_id xsi:type="xsd:string">3459</product_id>
                            <sku xsi:type="xsd:string">HK-BP001</sku>
                            <categories SOAP-ENC:arrayType="xsd:string[0]" xsi:type="ns1:ArrayOfString"/>
                            <websites SOAP-ENC:arrayType="xsd:string[7]" xsi:type="ns1:ArrayOfString">
                                <item xsi:type="xsd:string">1</item>                                
                            </websites>
                            <created_at xsi:type="xsd:string">2016-04-19 01:45:35</created_at>
                            <has_options xsi:type="xsd:string">1</has_options>
                            <special_from_date xsi:type="xsd:string">2016-04-19 00:00:00</special_from_date>
                            <tier_price SOAP-ENC:arrayType="ns1:catalogProductTierPriceEntity[0]" xsi:type="ns1:catalogProductTierPriceEntityArray"/>
                            <custom_design xsi:type="xsd:string">ultimo/default</custom_design>
                            <enable_googlecheckout xsi:type="xsd:string">1</enable_googlecheckout>
                        </info>
                    </ns1:catalogProductInfoResponse>
                </SOAP-ENV:Body>
            </SOAP-ENV:Envelope>

我希望转化的xml像:

            <?xml version="1.0" encoding="UTF-8"?>
            <Envelope>
                <Body>
                    <catalogProductInfoResponse>
                        <info>
                            <product_id>3459</product_id>
                            <sku>HK-BP001</sku>
                            <categories/>
                            <websites>
                                <item>1</item>                              
                            </websites>
                            <created_at>2016-04-19 01:45:35</created_at>
                            <has_options>1</has_options>
                            <special_from_date>2016-04-19 00:00:00</special_from_date>
                            <tier_price/>
                            <custom_design>ultimo/default</custom_design>
                            <enable_googlecheckout>1</enable_googlecheckout>
                        </info>
                    </catalogProductInfoResponse>
                </Body>
            </Envelope>

1 个答案:

答案 0 :(得分:1)

您可以使用XSLT:

<xsl:template match="*">
  <xsl:element name="{local-name()}">
    <xsl:apply-templates/>
  </xsl:element>
</xsl:template>