【问题标题】:Selecting Single Node in XML [duplicate]在 XML 中选择单个节点 [重复]
【发布时间】:2017-02-13 20:31:36
【问题描述】:

我的 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) 变成一个变量以供许多作者使用。

谢谢

【问题讨论】:

  • 你能在 XML 的开头张贴更多的文件吗,最初的几行?
  • 你是如何获得x 变量的?
  • 您的语法已关闭。 XPath 应该是"author[text()='1413']" 请参阅stackoverflow.com/q/3206975/215552
  • 谢谢你,迈克,我的语法确实不对

标签: c# xml xpath


【解决方案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]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-16
    • 1970-01-01
    • 2020-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多