使用xpath在不知道c#中的属性名的情况下查找节点

时间:2017-08-13 07:47:31

标签: c# xml xpath

Hello My Friends我有一个像这样的xml:

string query = "//book[@category='Fiction']//title";
XPathNodeIterator xPathIt = p_xPathNav.Select(query);

如果我使用这个xpath查询就可以了:

string query = "//book['Fiction']//title";

我会得到正确的答案: Jack Kerouac

但问题出在这里,当我没有这样的属性名称时:

Button

而且我不知道节点的第一个属性的名称是什么。

如何在不知道任何节点的第一个属性名称的情况下找到带有xpath的节点? (我只有过滤节点的属性值)

由于

1 个答案:

答案 0 :(得分:0)

使用xml linq:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XDocument doc = XDocument.Load(FILENAME);

            XElement book = doc.Descendants("book").Where(x => x.Descendants().Select(y => (string)y == "Jack Kerouac").Any()).FirstOrDefault();
        }
    }
}