【发布时间】:2011-03-04 18:20:17
【问题描述】:
我正在使用 XPath 和 Hpple / libxml2 来解析 iOS / iPhone OS 中的 HTML。我现在想在解析文档时忽略某个标记,例如粗体标记<b>:
例如来自代码
<div>foo<b>bar</b></div>
应选择字符串“foo”和“bar”并将其连接起来,生成“foobar”。
在查看相关请求后,我觉得他们可能无法解决此问题,但绝对有可能我错了。如果是这样,请让我知道并使用上面的示例举例说明。
谢谢。
【问题讨论】:
-
好问题,+1。请参阅我的答案以获得完整、简短且简单的解决方案和解释。 :)
-
我对你使用命名空间这个词有点困惑。
<b>标签只是一个标签,在所使用的任何标记语言中都有特定的含义(在您的情况下可能是 XHTML)。命名空间确保来自多种标记语言的标签可以一起使用,而不会在语义上产生歧义。 -
@SnuggleUp:不恰当的术语使这个问题变得不清楚。
-
哦,我真的很抱歉!事实上,我用了错误的术语来表达我的意思。实际上,我还不太关心 XML 或其他标记语言,只是当我像现在一样表面上需要它时。我已经更正了。
-
跟进:“解析”一个 XML 文档将其变成一个节点树(元素节点、属性节点、文本节点等)。 XPath 表达式导航该节点树,选择其中的一些,或计算属性,例如它们的字符串值(在这种情况下,这是您想要的)。因此,您不使用 XPath 来解析 XML,而是使用 XPath 来查找解析后的 XML。原始 XML 包含标签,解析器使用这些标签来构造元素节点。例如元素节点
b对应源XML中的两个标签,开始标签<b>和结束标签</b>