-1

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 をどのように読み取ることができますか。

ありがとう。

4

4 に答える 4

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

またはLBが言及したLinq-to-Xml 。

于 2012-07-16T18:16:19.770 に答える
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;
}
于 2012-07-16T18:05:18.707 に答える
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);
}
于 2012-07-16T18:25:49.887 に答える
0
XmlTextReader reader = new XmlTextReader(strURL);

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

XML ドキュメント内のコレクションごとにバッキング クラスを作成します。

于 2012-07-16T18:00:35.783 に答える