2017-02-13 4 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, поэтому я думаю, что что-то с тем, как я прохожу мимо автора, получает эту ошибку. Со временем я планирую сделать идентификатор автора (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] 
Смежные вопросы