使用代码或XSLT从Soap响应中删除名称空间、属性和Xsi

本文关键字:空间 属性 Xsi 删除 代码 XSLT 响应 Soap | 更新日期: 2023-09-27 17:55:03

使用代码或XSLT从Soap响应中删除名称空间、属性和Xsi

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

是soap响应。

            <?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>

使用代码或XSLT从Soap响应中删除名称空间、属性和Xsi

您可以使用XSLT:

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