2
votes

My partner provided me a SOAP web service that returns a XML in this format:

 <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:RestControllerwsdl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <SOAP-ENV:Body>
      <ns1:getInfoResponse>
         <return xsi:type="ns2:Map">
            <item>
               <key xsi:type="xsd:string">l3</key>
               <value SOAP-ENC:arrayType="ns2:Map[10]" xsi:type="SOAP-ENC:Array">
                  <item xsi:type="ns2:Map">
                     <item>
                        <key xsi:type="xsd:string">id</key>
                        <value xsi:type="xsd:string">2815</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">date</key>
                        <value xsi:type="xsd:string">2015-06-10 00:00:14</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">Success</key>
                        <value xsi:type="xsd:string">0</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">Failed</key>
                        <value xsi:type="xsd:string">0</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">Cancel</key>
                        <value xsi:type="xsd:string">4</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">Error</key>
                        <value xsi:type="xsd:string">932</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">Active</key>
                        <value xsi:type="xsd:string">2644</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">Total</key>
                        <value xsi:type="xsd:string">3618</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">Summary</key>
                        <value xsi:type="xsd:string">1864000</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">CustomerID</key>
                        <value xsi:type="xsd:string">4</value>
                     </item>
                  </item>
                  <item xsi:type="ns2:Map">
                     <item>
                        <key xsi:type="xsd:string">id</key>
                        <value xsi:type="xsd:string">2805</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">date</key>
                        <value xsi:type="xsd:string">2015-06-09 00:00:30</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">Success</key>
                        <value xsi:type="xsd:string">0</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">Failed</key>
                        <value xsi:type="xsd:string">0</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">Cancel</key>
                        <value xsi:type="xsd:string">11</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">Error</key>
                        <value xsi:type="xsd:string">1294</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">Active</key>
                        <value xsi:type="xsd:string">7321</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">Total</key>
                        <value xsi:type="xsd:string">3622</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">Summary</key>
                        <value xsi:type="xsd:string">2588000</value>
                     </item>
                     <item>
                        <key xsi:type="xsd:string">CustomerID</key>
                        <value xsi:type="xsd:string">4</value>
                     </item>
                  </item>
               </value>
            </item>
         </return>
      </ns1:getInfoResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

This is what I got from his webservice, I think it's from PHP SOAP As you can see the parent node "item" identify an item "key" string with no value and its children show its information like id, date, Success, ... and its child

I tried to parse it on visual studio using but got the error xml nodes have the same name.

Please help me with a solution or demo code to get that "l3"'s children nodes from each child item in xsi:type="ns2:Map"

1
How did you try to parse it? Show some code, please. - Yeldar Kurmangaliyev
I have edited your title. Please see, "Should questions include “tags” in their titles?", where the consensus is "no, they should not". - John Saunders

1 Answers

1
votes

Try this

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

using System.IO;

namespace ConsoleApplication33
{
    class Program
    {
        static void Main(string[] args)
        {
            string input = 
            "<SOAP-ENV:Envelope SOAP-ENV:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:ns1=\"urn:RestControllerwsdl\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:ns2=\"http://xml.apache.org/xml-soap\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">" +
               "<SOAP-ENV:Body>" +
                  "<ns1:getInfoResponse>" +
                     "<return xsi:type=\"ns2:Map\">" +
                        "<item>" +
                           "<key xsi:type=\"xsd:string\">l3</key>" +
                           "<value SOAP-ENC:arrayType=\"ns2:Map[10]\" xsi:type=\"SOAP-ENC:Array\">" +
                              "<item xsi:type=\"ns2:Map\">" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">id</key>" +
                                    "<value xsi:type=\"xsd:string\">2815</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">date</key>" +
                                    "<value xsi:type=\"xsd:string\">2015-06-10 00:00:14</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">Success</key>" +
                                    "<value xsi:type=\"xsd:string\">0</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">Failed</key>" +
                                    "<value xsi:type=\"xsd:string\">0</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">Cancel</key>" +
                                    "<value xsi:type=\"xsd:string\">4</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">Error</key>" +
                                    "<value xsi:type=\"xsd:string\">932</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">Active</key>" +
                                    "<value xsi:type=\"xsd:string\">2644</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">Total</key>" +
                                    "<value xsi:type=\"xsd:string\">3618</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">Summary</key>" +
                                    "<value xsi:type=\"xsd:string\">1864000</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">CustomerID</key>" +
                                    "<value xsi:type=\"xsd:string\">4</value>" +
                                 "</item>" +
                              "</item>" +
                              "<item xsi:type=\"ns2:Map\">" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">id</key>" +
                                    "<value xsi:type=\"xsd:string\">2805</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">date</key>" +
                                    "<value xsi:type=\"xsd:string\">2015-06-09 00:00:30</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">Success</key>" +
                                    "<value xsi:type=\"xsd:string\">0</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">Failed</key>" +
                                    "<value xsi:type=\"xsd:string\">0</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">Cancel</key>" +
                                    "<value xsi:type=\"xsd:string\">11</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">Error</key>" +
                                    "<value xsi:type=\"xsd:string\">1294</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">Active</key>" +
                                    "<value xsi:type=\"xsd:string\">7321</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">Total</key>" +
                                    "<value xsi:type=\"xsd:string\">3622</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">Summary</key>" +
                                    "<value xsi:type=\"xsd:string\">2588000</value>" +
                                 "</item>" +
                                 "<item>" +
                                    "<key xsi:type=\"xsd:string\">CustomerID</key>" +
                                    "<value xsi:type=\"xsd:string\">4</value>" +
                                 "</item>" +
                              "</item>" +
                           "</value>" +
                        "</item>" +
                     "</return>" +
                  "</ns1:getInfoResponse>" +
               "</SOAP-ENV:Body>" +
               "</SOAP-ENV:Envelope>";

            XDocument doc = XDocument.Parse(input);
            XElement value = doc.Descendants("value").FirstOrDefault();
            var items = value.Elements("item")
                .Select(x => x.Elements("item").Select(y => new { key = y.Element("key").Value, value = y.Element("value").Value})
                .ToList()).ToList();
        }

    }
}

Here is picture of results enter image description here