在C#中解析XML

时间:2010-10-29 17:22:04

标签: c# xml parsing

您好我想知道如何在C#中解析这个简单的XML文件内容。我可以有多个“in”元素,从那些我想要使用date,min,max和state子值。

<out>
<in>
<id>16769</id>
<date>29-10-2010</date>
<now>12</now>
<min>12</min>
<max>23</max>
<state>2</state>
<description>enter text</description>
</in>

<in>
<id>7655</id>
<date>12-10-2010</date>
<now>1</now>
<min>1</min>
<max>2</max>
<state>0</state>
<description>enter text</description>
</in>
</out>

5 个答案:

答案 0 :(得分:3)

答案 1 :(得分:2)

System.XML namespace具有各种用于解析,读取和编写XML数据的工具。顺便说一下,你的XML格式不正确;你有两个<out>元素,但只有一个</out>元素。

答案 2 :(得分:2)

您需要System.XML,从XmlDocument.Load(filename)开始。

加载XmlDocument后,您可以根据需要使用内置的.Net XML对象模型深入查看它,从XmlDocument级别开始。您可以以非常直观的方式递归地遍历树,在您前进时从每个XmlNode捕获您想要的内容。

或者(最好),您可以使用XPath - 示例here快速找到符合特定条件的XmlNode中的所有XmlDocument。 C#中的用法示例是XmlNode.SelectNodes

using System;
using System.IO;
using System.Xml;

public class Sample {

  public static void Main() {

    XmlDocument doc = new XmlDocument();
    doc.Load("booksort.xml");

    XmlNodeList nodeList;
    XmlNode root = doc.DocumentElement;

    nodeList=root.SelectNodes("descendant::book[author/last-name='Austen']");

    //Change the price on the books.
    foreach (XmlNode book in nodeList)
    {
      book.LastChild.InnerText="15.95";
    }

    Console.WriteLine("Display the modified XML document....");
    doc.Save(Console.Out);

  }
}

答案 3 :(得分:1)

这可能超出了你想要的范围,但值得一提......

我讨厌解析XML。说真的,我几乎拒绝这样做,特别是因为.NET可以为我做。我要做的是创建一个具有上述属性的“In”对象。您可能已经有一个,或者创建需要60秒。您还需要一个名为“Out”的In对象列表。

然后只需将XML反序列化为对象。这只需几行代码。这是一个例子。顺便说一句,这使得更改和重新保存数据同样容易。

How to serialize/deserialize

答案 4 :(得分:0)