在XML中选择单个节点

时间:2017-02-13 20:31:36

标签: c# xml xpath

我的XML就像

一样
<linkToFooterRepository>1054</linkToFooterRepository>
<linkToTopNavRepository>1188</linkToTopNavRepository>
<author>1413</author>

然后我有

var xmlListItems = xPathNavigator.Select(xPathChildren)
            .Cast<XPathNavigator>()
            .OrderByDescending(x =>
            {
                var xmlNode = x.SelectSingleNode("author=1413");


            })
            .Skip(pager.CurrentPageIndex * pager.PageSize)
            .Take(pager.PageSize);

我不断得到一个Expression必须评估一个节点集错误。我对Xpath很新,所以我认为我传递作者的方式就是这个错误。我及时计划将作者ID(1413)变成一个变量,以便与许多作者一起使用。

感谢

1 个答案:

答案 0 :(得分:1)

尝试这样的事情(假设你有一个根元素):

var xmlNode = x.SelectSingleNode(@"/root/author[text()=1413]");

我创建了这个简单的代码,因为你的XML不包含根元素。

var xml =
          "<root>" +
          "    <linkToFooterRepository>1054</linkToFooterRepository>" +
          "    <linkToTopNavRepository>1188</linkToTopNavRepository>" +
          "    <author>1413</author>" 
          "</root>"
          ;

var x = new XmlDocument();
x.LoadXml(xml);

var xmlNode = x.SelectSingleNode(@"/root/author[text()='1413']");  // /author=[1413]