http://api.serviceu.com/rest/events/occurrences?orgkey=613dc2ce-0b32-4926-8e7e-33ee279be1cb
我有上面的xml url,它有n次出现。我需要读取所有出现并将其加载到列表项中。如何使用xml阅读器。
XmlTextReader reader = new XmlTextReader(strURL);
while (reader.Read())
{
}
例如,我如何读取每个发生的CategoryList,ContactEmail,Description。
感谢。
答案 0 :(得分: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-to-Xml为 L.B 。
答案 1 :(得分: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;
}
答案 2 :(得分:0)
XmlTextReader reader = new XmlTextReader(strURL);
while (reader.Read())
{
switch(reader.Name)
{
case "ContactEmail":
//reader.ReadElementContentAsString();
break;
//...
}
}
我会为XML文档中的每个集合创建一个支持类。
答案 3 :(得分: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);
}