【问题标题】:What is the Xpath query for my XML?我的 XML 的 Xpath 查询是什么?
【发布时间】:2014-02-22 17:41:56
【问题描述】:

我有一个具有这种特定结构的 XML 文档:

<ul>
<li>
the 
<a href="http://www...">dog</a> 
is black
</li>
<li >
the
<a href="http://www....">cat</a>
is white
</li>
</ul>

但我也有这个:

<ul>
<li>
the bird is blue
</li>
<li >
the
<a href="http://www....">frog</a>
</li>
</ul>

我不知道我的&lt;li&gt; 中是否有&lt;a&gt; 以及它在哪里。 我希望 XPath 查询得到诸如“狗是黑色的”、“猫是白色的”、“鸟是蓝色的”和“青蛙”这样的句子

谢谢!

【问题讨论】:

标签: html xml xpath


【解决方案1】:

如果您绑定到 XPath 1.0,则无法将句子作为分隔标记。您可以使用

获取所有列表元素中的所有文本
//ul//text()

,但是对于第一个 HTML sn-p,这将返回类似于“狗是黑猫是白的”。

如果您需要分隔句子,请从 XPath 外部检索列表项和句子(例如 PHP、Java、...;无论您使用什么)。如何做到这一点因语言而异,请查看参考资料或完善问题/提出其他问题。

//ul/li

使用 XPath 2.0,您会获得更多的运气,并且可以使用以下查询之一:

//ul/li/data(.)
//ul/li/string-join(.//text. ' ')

如果第一个返回您需要的内容,则使用它,如果空白存在问题(不同实现的空白处理不同,但通常可以配置)使用更灵活的第二个查询并根据需要进行调整。

【讨论】:

    【解决方案2】:

    感谢您的回复,我将 Xpath 用于带有 HTML 解析器的 iOS 应用程序:hpple (https://github.com/topfunky/hpple) 我认为它使用 Xpath 1.0,因为日志说我无法识别字符串连接函数

    //ul//text() 
    

    有效,但他每个单词返回一个单词,而不是每行一行

    【讨论】:

      猜你喜欢
      • 2019-10-30
      • 1970-01-01
      • 1970-01-01
      • 2013-06-01
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多