使用实验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, and td(也许还有其他元素,不确定)。它只是忽略标签,只提供文本内容。这可以通过提供语义正确的父级而不是 来补救atom.Body,但这需要我们提前知道 HTML 将是什么。我希望有一个像 的通用根atom.DocumentFragment,但我没有看到。那么是否有某种方法可以使用它来处理任何任意 HTML 片段?
1 回答
拉丁的传说
TA贡献1789条经验 获得超8个赞
ParseFragment
总是上下文敏感的,因为它遵循 HTML5 片段解析算法。该算法是为实现 DOM innerHTML 属性而设计的,从给定的 innerHTML 字符串生成正确的树取决于周围的上下文(尤其是上下文是否在表中)。
所以html
包无法独立于上下文解析 HTML 片段。
如果您需要有关解析如何取决于上下文的更多信息,请参阅http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#reset-the-insertion-mode-properly
- 1 回答
- 0 关注
- 259 浏览
添加回答
举报
0/150
提交
取消