来自XPathSelectElements的结果的XPathSelectElement

时间:2012-12-03 03:59:13

标签: c# xml linq xpath

好的,有一些问题,我可以运行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未从当前节点获取。如果显然某种程度上回到父节点/ doc获取值,我如何强制它自己“root”?

2 个答案:

答案 0 :(得分:2)

您可以使用此xpath

./Customer

.表示当前节点(通常暗示)

/表示该特定节点的childern

答案 1 :(得分:1)

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

相关问题