2012-07-16 67 views

回答

1

Linq2Xml可以使生活更轻松。

XDocument xDoc = XDocument.Load("http://api.serviceu.com/rest/events/occurrences?orgkey=613dc2ce-0b32-4926-8e7e-33ee279be1cb"); 
var list = xDoc.Descendants("Occurrence") 
      .Select(o => new Item 
      { 
       Category = (string)o.Element("CategoryList"), 
       EMail = (string)o.Element("ContactEmail"), 
       Description = (string)o.Element("Description"), 
      }) 
      .ToList(); 


public class Item 
{ 
    public string Category; 
    public string EMail; 
    public string Description; 
} 
+0

在这些元素上调用'.Value'可能会有好处。 – 2012-07-16 18:32:28

+0

@MarkusJarderot谢谢,我更新了答案 – 2012-07-16 18:41:57

+0

Lb ..如何将它分配给列表而不是数组?类似oChLifeItems.Category = o.Element(“CategoryList”) – Tronics 2012-07-16 18:46:26

0
XmlTextReader reader = new XmlTextReader(strURL); 

    while (reader.Read()) 
    { 
     switch(reader.Name) 
     { 
      case "ContactEmail": 
        //reader.ReadElementContentAsString(); 
       break; 
      //... 
     } 
    } 

我会为XML文档中的每个集合创建一个支持类。

+0

背衬类创建具有相同名称和类型的XML属性的类。 – 2012-07-16 18:45:03

+0

嗨尼克,当使用上面的代码时我收到错误,当我尝试联系电子邮件...错误是这样的。ReadElementContentAsString方法不支持节点类型EndElement。行1,位置100 – Tronics 2012-07-16 19:33:32

+0

的代码是这样的一段时间(reader.Read()){ 开关 (reader.Name) { 案 “所属分类”: VAR猫= reader.ReadElementContentAsString(); 休息; case“ContactEmail”: var email = reader.ReadElementContentAsString(); 休息; } } – Tronics 2012-07-16 19:33:53

2

您可以使用XmlReader

using(XmlReader reader = XmlReader.Create("...")) 
{ 
    while (reader.Read()) 
    { 
     if (reader.IsStartElement()) 
     { 
      switch (reader.Name) 
      { 
       case "CategoryList": 
        var cat = reader.ReadElementContentAsString(); 
        break; 
       case "ContactEmail": 
        var email = reader.ReadElementContentAsString(); 
        break; 
      } 
     } 
    } 
} 

XmlDocument丝毫XPath

XmlDocument document = new XmlDocument(); 
document.Load("..."); 
foreach (XmlNode node in document.SelectNodes("//CategoryList")) 
{ 
    var cat = node.InnerText; 
} 

foreach (XmlNode node in document.SelectNodes("//ContactEmail")) 
{ 
    var email = node.InnerText; 
} 

或LINQ到XML作为L.B提及。

0
[DataContract(Name = "Occurrence", Namespace = "")] 
class Occurrence 
{ 
    [DataMember] 
    public string CategoryList { get; set; } 
    [DataMember] 
    public string ContactEmail { get; set; } 
    [DataMember] 
    public string Description { get; set; } 
} 
var ser = new DataContractSerializer(typeof(List<Occurrence>), "Occurrences", ""); 

List<Occurrence> objects = null; 
using (var reader = XmlReader.Create(strURL)) 
{ 
    objects = (List<Occurrence>) ser.ReadObject(reader); 
} 
相关问题