-2

好的,有一些问题,我可以运行 XPathSelectElements 来获取我想要从中提取信息的三个(在这种特定情况下,尽管它可能是 X 个)节点集。我正在抓取一些符合 XHTML 的 HTML,并且必须使用 XPathSelectElements 来查找 X 个数,在此示例中为 Order 对象。

考虑将 HTML/XML 简化为以下内容:

<RandomInfo>
<NAME>ASDSADS</NAME>
<WHAT>Dunno</NAME>
<div id='OrderResults'>
  <div id='order_foo'>
    <ID>1</ID>
    <Customer>Bill</Customer>
    <Total>500</Total>
  </div>
  <div id='order_bar'>
    <ID>2</ID>
    <Customer>Bob</Customer>
    <Total>200</Total>
  </div>
  <div id='order_abc'>
    <ID>1</ID>
    <Customer>Butch</Customer>
    <Total>100</Total>
  </div>
</div>
</RandomInfo>

“order_*”名称是动态的,不能依赖于选择节点。所以我有一个 XPathSelectElements 可以为我正确获取三个 div 的集合。但是,当我遍历每个返回的 XNode 并尝试调用 XPathSelectElement("//Customer") 时,我总是会为该 XPathSelectElement 调用返回相同的值。我可以使用 VS 查看节点对象正在发生变化,但 XPathSelectElement 没有从当前节点获取。如果显然以某种方式返回到父节点/文档以获取值,我该如何强制它“根植”自身?

4

2 回答 2

2

你可以使用这个 xpath

./Customer

.表示当前节点(通常隐含)

/表示该特定节点的子节点

于 2012-12-03T04:20:54.327 回答
1

并且 // 在 XPath 的开头表示文档根目录中的任何节点。因此,您可能在任何节点中,它将始终匹配您文档的所有客户节点。//(无论是在 xpath 的开头还是在中间)对性能非常不利,应该避免!

于 2012-12-03T10:36:58.533 回答