1

在 XML 文档中搜索以根据搜索条件检索一个或多个记录的最佳方法是什么。欢迎提出建议。

4

3 回答 3

7

如果可能的话,我个人会使用 LINQ to XML。您的问题目前非常模糊,但例如,您可以写:

XDocument doc = XDocument.Load("test.xml");
var matches = doc.Descendants("Person")
                 .Where(x => (string) x.Attribute("Name") == "Jon")
                 .Where(x => x.Elements("Child").Count() >= 2);

虽然您可以使用 XPath,但我通常不喜欢 - 它存在将一种语言嵌入另一种语言的所有正常问题,而使用 LINQ to XML 则您始终使用 C#,因此您无需学习新语法 - 只是相关方法在 LINQ to XML 库中。

LINQ to XML 还使命名空间处理变得简单,并且您不必担心转义值等,因为您的查询全部在代码中而不是在字符串中。

于 2012-07-10T04:08:08.410 回答
2

.net xml 文档对 xpath 有很好的支持。

它应该适用于您的大多数 xml 搜索。

查看XPath 示例

于 2012-07-10T04:07:39.100 回答
1

XPathXmlDocument.SelectNodesSelectSingleNode使用,如下所示:

XmlDocument doc = new XmlDocument();
doc.Load("bookstore.xml");
XmlNode root = doc.DocumentElement;

// Add the namespace.
XmlNamespaceManager nsmgr = new XmlNamespaceManager(doc.NameTable);
nsmgr.AddNamespace("bk", "urn:newbooks-schema");

// Select and display the first node in which the author's 
// last name is Kingsolver.
XmlNode node = root.SelectSingleNode(
"descendant::bk:book[bk:author/bk:last-name='Kingsolver']", nsmgr);
Console.WriteLine(node.InnerXml);
于 2012-07-10T05:10:30.507 回答