code.google.com/p/go.net/html
软件包,我们可以使用
ParseFragment
解析HTML文档的某些小节。就像以下:
var s = `
<option id="foo">first</option>
<option Class="tester">second</option>
<option>third</option>
`
doc, err := html.ParseFragment(strings.NewReader(s), &html.Node{
Type: html.ElementNode,
Data: "body",
DataAtom: atom.Body,
})
对于大多数元素,这效果很好。但是,当某些元素处于HTML的根位置时,例如
tbody
,
tr
和td
(也许是其他人,不确定),它似乎无法正常工作。它只是忽略了标签,只给出文本内容。 可以通过提供语义上正确的父级而不是
atom.Body
来纠正这一点,但这要求我们事先知道HTML会是什么。 我希望有像
atom.DocumentFragment
这样的通用根,但我看不到。因此,是否有某种方法可以使用它与任何任意HTML片段一起使用?
ParseFragment
始终是上下文敏感的,因为它遵循HTML5片段散布算法。该算法是为实现DOM InnerHTML属性而设计的,从给定的InnerHTML字符串生成的正确树取决于周围的上下文(尤其是上下文是否在表中)。