使用實驗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,})這適用于大多數(shù)元素。但是當某些元素位于 HTML 的根位置時,它似乎不起作用,例如tbody, tr, and td(也許還有其他元素,不確定)。它只是忽略標簽,只提供文本內容。這可以通過提供語義正確的父級而不是 來補救atom.Body,但這需要我們提前知道 HTML 將是什么。我希望有一個像 的通用根atom.DocumentFragment,但我沒有看到。那么是否有某種方法可以使用它來處理任何任意 HTML 片段?
1 回答

拉丁的傳說
TA貢獻1789條經(jīng)驗 獲得超8個贊
ParseFragment
總是上下文敏感的,因為它遵循 HTML5 片段解析算法。該算法是為實現(xiàn) DOM innerHTML 屬性而設計的,從給定的 innerHTML 字符串生成正確的樹取決于周圍的上下文(尤其是上下文是否在表中)。
所以html
包無法獨立于上下文解析 HTML 片段。
如果您需要有關解析如何取決于上下文的更多信息,請參閱http://www.whatwg.org/specs/web-apps/current-work/multipage/parsing.html#reset-the-insertion-mode-properly
- 1 回答
- 0 關注
- 293 瀏覽
添加回答
舉報
0/150
提交
取消