从div id中检索xpath内容

时间:2012-02-15 07:43:07

标签: html xpath

如何检索article-field1中的文本?

<title>Testing</title>
  <link>http://example.org</link>
  <description>Description</description>
  <language>en-us</language>
  <lastBuildDate>Mon, 13 Feb 2012 00:00:00 +0000</lastBuildDate>

  <item>
    <title>Title Here</title>
    <link>http://example.org/2012/03/27/</link>
    <description><![CDATA[
        <div id="article-field1"><a href="http://example.org/test1">Test 1</a></div>
        <div id="article-field2">123</div>
    <pubDate>Tue, 2 Mar 2012 00:00:00 +0000</pubDate>
  </item>

我试过用

//description/div[@id="article-field1"]/text()

有任何建议吗?

由于

3 个答案:

答案 0 :(得分:3)

从我看到的数据是CDATA标签。这可以防止解析其内容。

有关详细信息,请参阅How do I retrieve element text inside CDATA markup via XPath?

答案 1 :(得分:2)

单次调用普通XPATH处理器无法做到这一点。

您有两种选择:

  1. 使用实现dyn:evaluate()功能的特定XPATH处理器(这引出了一个问题:您使用的处理器和版本是什么?); OR
  2. 使用两个电话。第一步获取/ title / item / description节点的文本值。第二个,在将第一个结果作为一个新的XML文档加载(用几个tweek将xml片段转换成一个合适的xml文档)之后,就是div [@ id =“article-field1”]。

答案 2 :(得分:2)

//description/div[@id="article-field1"]/a/text() 

如果删除了格式错误的CDATA标记,则会添加根元素并关闭相应的“description”标记。这假设部分粘贴原始XML的错误,这在表达式中是有意义的。基本上,原始查询缺少a元素。

可以在http://www.xpathtester.com/验证。