如何使用 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

\ns 和 \ts 在原始来源中,所以包含在这里只是为了完整性 - 我可以使用 .trimmingCharacters(in:) 删除它们)

假设我有一个 XMLElement 表示 div 节点(节点在 Kanna 中是 XMLElements,无论源数据类型如何),我尝试了多种方法来提取文本 '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]")