【发布时间】:2015-04-30 16:29:47
【问题描述】:
我想为以下 XML 中的每个文本元素返回一个 XPath 或类似内容。
我试过XPathNodeIterator,但似乎只返回指定节点级别下的节点。如何获取所有节点和子节点并返回如下对象列表?
String exp = "/*/*/child::*";
XPathNodeIterator NodeIter = navigator.Select(exp);
XML:
<div>
<p>Title</p>
<ul>
<li>Features</li>
</ul>
<ul>
<li>Name</li>
<li>Age</li>
<li>Gender</li>
</ul>
<h2>Comments</h2>
<p>Bill</p>
<p>Link</p>
</div>
期望的结果:
我想得到一个类似(div/p[1], Title), (div/ul[1]/li[1], Features), (div/ul[2]/li[1], Name), (div/ul[2]/li[2], Age), (div/ul[2]/li[3], Gender), (div/h2[1], Comments), (div/p[2], Bill), (div/p[3], Link)的列表
【问题讨论】:
-
从那以后是
[0]XPath?使用 XPath 的索引从1开始。如果你想选择不包含其他元素的元素,那么//*[not(*)]应该这样做。至于生成 XPath 表达式,你想用 XML 和命名空间做什么? -
你想要
ui而不是ul? -
我建议你尝试一下递归,如果你遇到问题,我们会帮助你。
-
我不确定我是否理解您的问题。您是否尝试 1) 查找所有具有文本值的
XmlElement节点?遍历XmlElement层次结构并为每个唯一指定它的 XPath 查询生成一个 XPath 查询? -
@Chuck Savage 这是一个错字,应该是 ul。