简体   繁体   中英

remove namespaces, attributes, Xsi from Soap response using code or XSLT

Remove namespaces, attributes, Xsi from Soap response using code or XSLT

Want to transform a soap response to a normal XML(without namespaces, atributes) using C# code (Serializer, XMLDoc, XDoc ) or XSLT.

here is the soap response.

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

i want transformed xml like :

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

You can use XSLT:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM