2014-11-24 138 views
0

我正在使用WebRequest和WebReponse類從Web API獲取響應。我得到的迴應是以下格式如何將xml字符串轉換爲使用c的對象#

<?xml version="1.0" encoding="UTF-8"?> 

<ROOT> 
    <A></A> 
    <B></B> 
    <C></C> 
    <D> 
     <E NAME="aaa" EMAIL="[email protected]"/> 
     <E NAME="bbb" EMAIL="[email protected]"/> 
    </D> 
</ROOT> 

我想所有的E元素作爲List<E>或東西的XML。

有人可以指導我這個請求。

+0

上課for xml並使用XmlSerialization Deserialize方法將xml轉換爲該新創建類的對象 - http://msdn.microsoft.com/en-us/library/dsh84875%28v=vs.110%29.aspx – malkam 2014-11-24 13:40:17

回答

4

,如果你想避免序列化,因爲你只希望XML的一個非常具體的部分,你可以用一個LINQ語句來做到這一點:

var items = XDocument.Parse(xml) 
       .Descendants("E") 
       .Select(e => new 
       { 
        Name = e.Attribute("NAME").Value, 
        Email = e.Attribute("EMAIL").Value 
       }) 
       .ToList(); 
+0

perfecto。爲了增加他,我更喜歡使用'.Descendants(「D」) .Descendants(「E」)'這樣如果所有元素都被添加到xml輸出的其他地方,我的代碼就不會中斷。謝謝 – Yasser 2014-11-25 05:25:36

0

工作例如:

var doc = XDocument.Parse(@"<?xml version='1.0' encoding='UTF-8'?> 
<ROOT> 
    <A></A> 
    <B></B> 
    <C></C> 
    <D> 
     <E NAME='aaa' EMAIL='[email protected]'/> 
     <E NAME='bbb' EMAIL='[email protected]'/> 
    </D> 
</ROOT>"); 

      var elements = from el in doc.Elements() 
          from el2 in el.Elements() 
          from el3 in el2.Elements() 
          where el3.Name == "E" 
          select el3; 
      foreach (var e in elements) 
      { 
       Console.WriteLine(e); 
      } 
相關問題