0

my XML is single like

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

and then i have

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


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

I keep getting a Expression must evaluate to a node set error. I'm pretty new to Xpath so I think something with how I pass author is getting this error. In time I plan on making the author ID (1413) into a variable to use with many authors.

thanks

DanielJ
  • 51
  • 2
  • 12

1 Answers1

1

Try something like this (assuming you have a root element):

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

I created this simple code, because your XML does not contain a root element.

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]
Tony
  • 16,527
  • 15
  • 80
  • 134