• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

iphone - 按原始顺序解析/组合嵌套的 HTML 元素值

[复制链接]
菜鸟教程小白 发表于 2022-12-12 17:26:47 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我想知道如何使用 this (Hpple) 解析 HTML block 的内容,同时保持字符串在 HTML 文档中出现的顺序。与 XPath 表达式一起使用的包装器。环境是iOS。

例子:

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

假设我们要按原始顺序解析

标签内的所有字符串,以便得到这样的结果:

Lorem ipsum dolor sit amet, consectetur

这个问题的症结在于维持字符串的顺序。

以及的所有直接内容分别或同时获取很容易使用 XPath 表达式时会忽略顺序,因此可能会导致将 的内容放在字符串的末尾。

如何使用带有上述包装器的 XPath 表达式来实现这一点?

更新:

使用上述包装器和平台(尤其是 libxml2)实现此目的的一种方法似乎是以下 XPath 表达式:

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

但是,生成的元素是分开的,不是作为一个字符串传递的,因此必须手动连接它们。



Best Answer-推荐答案


如果 Hpple 是兼容的 XPath 引擎,那么它必须能够评估此表达式:

string(/*/body/div)

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

根据定义,节点的 字符串值 是其所有后代文本节点的串联(按文档顺序),因此该结果正是您请求的字符串。

基于 XSLT 的验证:

这种转变:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xslutput 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 - 按原始顺序解析/组合嵌套的 HTML 元素值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7340030/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap