2017-02-13 94 views
0

我的XML是一个喜欢选择单节点在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); 

我不断收到一个表达式必须节点集错误。我对Xpath相当陌生,所以我认为我通过作者的方式会导致这个错误。我计划将作者ID(1413)变成一个变量,供许多作者使用。

感谢

+0

您可以在XML的开头发布更多的文件,即最初的行吗? – Tony

+0

你如何得到你的'x'变量? – parameter

+2

您的语法关闭。 XPath应该是''author [text()='1413']“'请参阅http://stackoverflow.com/q/3206975/215552。 –

回答

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]