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的示例代码吗?

感谢

C#:在xml标记中搜索值

看看这个: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']" );