如何使用 Kanna 访问 HTML 元素的文本
How to access text of an HTML element using Kanna
给定以下形式的 HTML(在我的控制之外生成),我将如何使用 Kanna 提取文本 'What I wanted' ?
<div class="entry-meta">
\n\t\t\t<p>
<span class="tags-links">
<a href="http://example.com" rel="tag">This is not</a>
</span>
</p>
What I wanted\t\t
</div>\n
(\n
s 和 \t
s 在原始来源中,所以包含在这里只是为了完整性 - 我可以使用 .trimmingCharacters(in:)
删除它们)
假设我有一个 XMLElement
表示 div
节点(节点在 Kanna 中是 XMLElement
s,无论源数据类型如何),我尝试了多种方法来提取文本 'What I wanted',但 .text
和 .content
return 'This is not What I wanted' .
我以前用过 Hpple,但它不如 Swifty,需要做更多的工作才能使用。给定对同一节点的引用,Hpple 将通过 (node.children.last as! TFHppleElement).content
生成预期的文本,但查看 Kanna 的来源,看起来 .content
和 .text
都 return libxmlGetNodeContent(nodePtr)
的结果
我是否遗漏了另一种方法,或者这是 Kanna 的缺点?
Kanna 允许您 select 使用 XPath 表达式的节点,并且您想要的节点是该 div
元素中的第二个 text-node 子节点,因此您应该能够使用这个:
divElement.xpath("text()[2]")
给定以下形式的 HTML(在我的控制之外生成),我将如何使用 Kanna 提取文本 'What I wanted' ?
<div class="entry-meta">
\n\t\t\t<p>
<span class="tags-links">
<a href="http://example.com" rel="tag">This is not</a>
</span>
</p>
What I wanted\t\t
</div>\n
(\n
s 和 \t
s 在原始来源中,所以包含在这里只是为了完整性 - 我可以使用 .trimmingCharacters(in:)
删除它们)
假设我有一个 XMLElement
表示 div
节点(节点在 Kanna 中是 XMLElement
s,无论源数据类型如何),我尝试了多种方法来提取文本 'What I wanted',但 .text
和 .content
return 'This is not What I wanted' .
我以前用过 Hpple,但它不如 Swifty,需要做更多的工作才能使用。给定对同一节点的引用,Hpple 将通过 (node.children.last as! TFHppleElement).content
生成预期的文本,但查看 Kanna 的来源,看起来 .content
和 .text
都 return libxmlGetNodeContent(nodePtr)
我是否遗漏了另一种方法,或者这是 Kanna 的缺点?
Kanna 允许您 select 使用 XPath 表达式的节点,并且您想要的节点是该 div
元素中的第二个 text-node 子节点,因此您应该能够使用这个:
divElement.xpath("text()[2]")