2015-06-10 282 views
2

我的合作伙伴提供的我,在這種格式返回XML SOAP Web服務:解析XML具有相同的父和子節點名稱

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

這是我從他的web服務的話,我覺得它從PHP SOAP的 正如你所看到的父節點「項」確定的項目「鑰匙」字符串沒有價值和它的孩子們表現出像ID,日期,成功... 及其子

我試圖解析它的信息在Visual Studio使用,但得到錯誤的XML節點具有相同的名稱。

請幫我一個解決方案或演示代碼來獲取從XSI每個子項「L3」的子節點:TYPE =‘NS2:地圖’

+3

你是如何解析它的?請顯示一些代碼。 –

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

1

試試這個

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(); 
     } 

    } 
} 

這裏是結果圖片 enter image description here

+0

太棒了!謝謝! –

相關問題