如何根据XPATH中的内容提取节点?

时间:2011-02-25 15:05:08

标签: xpath

我尝试提取主体文本的网址是

indiainfoline “DOT” COM /市场/新闻/水泥股 - 构建 - 对预算的期许/ 3567698750

以下是我正在搜索的文字字符串 -

  

“UltraTech水泥(增长2.77%),Ambuja   水泥(上涨2.15%),ACC(上涨1.72%),   印度水泥(上涨1.50%),马德拉斯   水泥(上涨1.68%),Prism Cement(上涨   1.81%),JK Lakshmi水泥(增长2.11%)和Shree水泥“

我正在使用的XPATH查询是

sampleBody =  hd.DocumentNode.SelectSingleNode("
                   //*[contains(.,'UltraTech Cement (up 2.77%)')]").InnerText;

我正在获取整个页面,而不仅仅是该特定节点的文本。

任何人都可以说明原因吗?

谢谢。

1 个答案:

答案 0 :(得分:4)

  

我正在获取整个页面   只是那个特定的文本   节点

     

任何人都可以说明原因吗?

这个XPath表达式:

//*[contains(.,'UltraTech Cement (up 2.77%)')]

这意味着:任何包含'UltraTech Cement (up 2.77%)'作为字符串值 一部分的子元素。这是因为.会扩展为self::node(),然后使用string()作为contains()的参数。

因此,如果文档内容中有这样的字符串,根元素将把它作为字符串值的一部分

如果您需要具有此类字符串值的最内层元素,请使用此XPath表达式:

//*[contains(.,'UltraTech Cement (up 2.77%)')]
   [not(*[contains(.,'UltraTech Cement (up 2.77%)')])]

口语含义:我有字符串,我的孩子都没有。