在XML文档中搜索以根据搜索条件检索一个或多个记录的最佳方法是什么。欢迎提出建议。
答案 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)
答案 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);