【问题标题】:Get only the first value from XPathNavigator?仅从 XPathNavigator 获取第一个值?
【发布时间】:2012-02-01 15:28:22
【问题描述】:
var xml= @"<?xml version='1.0'?>
                 <bookstore>
                 <book genre=""3"">
                   <title>The Gorgias3</title>
                   <author>
                     <name>Plato3</name>
                   </author>
                   <price>3</price>
                 </book>
            <book genre=""4"">
                   <title>The Gorgias4</title>
                   <author>
                     <name>Plato4</name>
                   </author>
                   <price>4</price>
                 </book>
            </bookstore>";



XPathDocument docNav = new XPathDocument(new StringReader(xml));
XPathNavigator navigator = docNav.CreateNavigator();
XPathNodeIterator NodeIter = navigator.Select("/bookstore/book/title");

foreach (XPathNavigator selectedNode in NodeIter)
{
    Console.WriteLine(selectedNode.Name);
}

我怎样才能直接访问第一个/bookstore/book/title" 孩子并获得他的价值。

我不想迭代和打破循环

结果应该是"The Gorgias3"

附言我不想用第一个过滤器修改 xpath 表达式。

我想知道如何用 c# 做到这一点。

【问题讨论】:

  • 您在哪个上下文中提问? -- a) 知道“第一个孩子”将是一个标题 -- b) 以这样一种方式,您可以指定第一个孩子是什么(即标题,作者,...) -- 我问是因为何时何时我检查了您的 xml,在没有其他信息的情况下,我的想法是“第一个孩子”实际上是 并且说孩子有上面列出的孩子...
  • 它是一个迭代器,不能直接转换成节点使用吗?

标签: c# .net xml xpath xpathdocument


【解决方案1】:

用途:

var node = navigator.SelectSingleNode("/bookstore/book/title");

Console.WriteLine(node);

【讨论】:

  • 为什么 navigator.Select("/bookstore/book[1]/title[1]");不工作?
  • @RoyiNamir,为什么?有用。它返回实现IEnumerableXPathNodeIterator。所以它返回 IEnumerable 和 1 个项目。
猜你喜欢
  • 1970-01-01
  • 2020-03-22
  • 1970-01-01
  • 2022-07-27
  • 1970-01-01
  • 2014-07-21
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
相关资源
最近更新 更多