2023-09-07 07:00:03

如何解析XML文件?

c#中是否有解析XML文件的简单方法?如果有,是什么?


当前回答

如果你使用的是。net 3.5或更高版本,我会使用LINQ to XML。

其他回答

使用XmlTextReader, XmlReader, xmlnoderreader和System.Xml.XPath命名空间。和(XPathNavigator, XPathDocument, XPathExpression, XPathnodeIterator)。

通常XPath使XML的阅读更容易,这正是您所追求的。

如果您正在处理大量数据(许多兆字节),那么您希望使用XmlReader来流解析XML。

其他任何东西(XPathNavigator, XElement, XmlDocument,甚至XmlSerializer,如果您保留完整的生成的对象图)将导致高内存占用和非常慢的加载时间。

当然,如果您无论如何都需要内存中的所有数据,那么您可能没有太多选择。

我不确定是否存在“解析XML的最佳实践”。有许多技术适用于不同的情况。使用哪种方式取决于具体的场景。

你可以用LINQ转换成XML、XmlReader、XPathNavigator甚至正则表达式。如果你详细说明你的需求,我可以试着提出一些建议。

如果你使用的是。net 3.5或更高版本,我会使用LINQ to XML。

此外,您还可以以以下方式使用XPath选择器(简单地选择特定节点):

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

var found = doc.DocumentElement.SelectNodes("//book[@title='Barry Poter']"); // select all Book elements in whole dom, with attribute title with value 'Barry Poter'

// Retrieve your data here or change XML here:
foreach (XmlNode book in nodeList)
{
  book.InnerText="The story began as it was...";
}

Console.WriteLine("Display XML:");
doc.Save(Console.Out);

的文档