在XML文档中搜索

时间:2012-07-10 04:05:23

标签: c# xml winforms visual-studio-2008

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

3 个答案:

答案 0 :(得分:6)

如果可能的话,我个人会使用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还使命名空间处理变得简单,您无需担心转义值等,因为您的查询全部使用代码而不是字符串。

答案 1 :(得分:2)

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

它适用于大多数xml搜索。

查看XPath Examples

答案 2 :(得分:1)

XmlDocument.SelectNodes SelectSingleNode 使用XPath

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