C#:在xml标记中搜索值
本文关键字:搜索 xml | 更新日期: 2023-09-27 17:58:53
我有一个问题,关于如何搜索xml文件并获得与我提供的文本匹配的节点。例如:
<bookstore>
<book>
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
</bookstore>
我想搜索具有文本Benjamin的节点,并让程序存储XmlNode。我该怎么做?有人能提供这个ex的示例代码吗?
感谢
看看这个:https://web.archive.org/web/20211020111721/https://www.4guysfromrolla.com/articles/062310-1.aspx
Linq使得在XML中进行搜索变得非常容易。
这里有一个例子:
XDocument doc = XDocument.Load("C:''yourxml.xml");
XElement element =
doc.Element("bookstore")
.Descendants("book")
.Where(a => a.Element("author")
.Element("first-name").Value.Equals("Benjamin"))
.First();
试试这个:
while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
break;
case XmlNodeType.Text:
if (reader.Value.Equals(wrd)) // string wrd equals Benjamin
{
}
break;
}
LDAdams建议使用LINQ to XML,这是一个非常好的选择。您还可以使用.NET中的XMLDOM对象,并使用XPath查询来查找有问题的节点。两者都是可以接受的选择。LINQ to XML的好处是它使用了扩展方法而不是XPath,这使得不懂XML的开发人员更容易得到答案。此外,该知识至少部分适用于其他LINQ衍生物。
XPath
XmlDocument dom = new XmlDocument ( );
dom.LoadXml ( xml );
var nodes = dom.SelectNodes ( "//*[text()='Benjamin']" );