您好我想知道如何在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>
答案 0 :(得分:3)
Linq to xml也有助于解析xml -
答案 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反序列化为对象。这只需几行代码。这是一个例子。顺便说一句,这使得更改和重新保存数据同样容易。
答案 4 :(得分:0)