xpath访问节点中的信息

时间:2013-06-21 21:21:40

标签: xpath xpath-2.0

我需要从网站上删除信息,包含属性详细信息。

<div class="inner">
<div class="col">
  <h2><a href="house-in-digana-for-sale-kandy-32">House in Digana </a></h2>
  <div class="meta">
      <div class="date"></div>
      <span class="category">Houses</span>,
    <span class="location">Kandy</span>
  </div>
</div>
  <div class="attr polar">
    <span class="data">Rs. 3,600,000</span>
  </div>

“Kandy”和“Rs.3,600,000”的xpath表示法是什么?

1 个答案:

答案 0 :(得分:3)

由于XML文档中的细微差别,使用text()直接处理文本节点是不明智的。

相反,寻址元素节点直接将所有后代文本节点的串联作为元素值返回,这是人们通常想要的(并且认为他们在处理文本节点时会得到这些值)。

我在课堂上使用的规范示例是OCR内容为XML的示例:

<cost>39<!--that 9 may be an 8-->.22</cost>

使用XPath地址cost的元素的值是&#34; 39.22&#34;,但在XSLT 1.0中,XPath地址cost/text()的值是&#34; 39&# 34;哪个不完整。在XSLT 2.0(标记问题的方式)中,您将获得两个文本节点&#34; 39&#34;和&#34; .22&#34;,如果你连接它们,它看起来是正确的。但是,如果将它们传递给需要单例参数的函数,则会出现运行时错误。当您对元素进行寻址时,返回的文本将连接成一个字符串,该字符串适用于单个参数。

我告诉学生,在我的所有专业工作中,只有非常(非常!)几次我必须在样式表中使用text()

所以//span[@class='location' or @class='data']会找到两个字段,如果它们是整个文档中唯一的这样的元素。您可能需要使用&#34; .// span&#34;从文档树内的位置。