在原有的命令解析/组合嵌套的HTML元素值

我想知道你如何解析一个HTML块的内容,并同时维持字符串的顺序,因为它们出现在HTML文档中使用此(Hpple)包装它与XPath表达式的作品。 环境的iOS。

例:

<html> <body> <div> Lorem ipsum <a href="...">dolor</a> sit <b>amet,</b> consectetur </div> </body> </html>

比方说,我们要分析里面的所有字符串<div>中的原始顺序标记,使我们得到这样的结果:

Lorem ipsum dolor sit amet, consectetur

这样做的关键是维持字符串的顺序。 这很容易得到的所有直接内容<div>以及作为的<a><b>单独或同时使用XPath表达式,但省略了顺序,因此可能会导致推杆的含量<a><b>的字符串的末尾。

你怎么能做到这一点使用具有上述包装XPath表达式?

更新:

具有上述包装和平台(尤其libxml2的)来实现这一点的一种方法似乎是以下XPath表达式:

//div/descendant-or-self::*/text()

然而得到的元素分开,因此,他们必须手动串联尚未交付的一根弦。

--------------解决方案-------------

如果Hpple是一个兼容的XPath emgine,那么它必须能够评估该表达式

string(/*/body/div)

这个XPath表达式计算为第一个(按文档顺序的字符串值/*/body/div元素(在你的情况,只有一个这样的元素)。

根据定义,一个节点的字符串值是所有后代文本节点的连接(按文档顺序),因此这个结果正是你所要求的字符串。

基于XSLT的验证:

这种转变

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>

<xsl:template match="/">
<xsl:value-of select="/*/body/div"/>
</xsl:template>
</xsl:stylesheet>

当施加在提供的XML文档:

<html>
<body>
<div> Lorem ipsum
<a href="...">dolor</a> sit
<b>amet,</b> consectetur
</div>
</body>
</html>

产生想要的,正确的结果

Lorem ipsum
dolor sit
amet, consectetur

分类:iphone 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.300 (s). 10 q(s)