以通用方式使用html.parsefragment

问题描述 投票:0回答:1
通过实验

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字符串生成的正确树取决于周围的上下文(尤其是上下文是否在表中)。
go
1个回答
2
投票
html

软件包无法独立于其上下文来解析HTML片段。

If you need more information about how the parsing depends on the context, see 
http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#reset-the-insertion-mode-appropriately


therbe,thishis的解释可以帮助您。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.