2017-02-13 185 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]