我正在嘗試使用 Golang xml 解析器解析 html 文檔。我已經(jīng)設(shè)法提取所有<li>元素,但如果元素包含鏈接<a>,則鏈接的內(nèi)容將被忽略。我只想忽略嵌套<a>并將其內(nèi)容顯示為純文本,但我不知道如何。這是我的代碼:d := xml.NewDecoder(resp.Body)d.Strict = falsed.AutoClose = xml.HTMLAutoClosed.Entity = xml.HTMLEntitytype list_item struct { Data string `xml:",chardata"`}for { t,_ := d.Token() if t == nil { break } switch se := t.(type) { case xml.StartElement: if se.Name.Local == "li" { var q list_item d.DecodeElement(&q, &se) c.Infof("%+v\n", q) } }}有沒有辦法忽略嵌套元素并顯示其內(nèi)容?
2 回答

絕地?zé)o雙
TA貢獻1946條經(jīng)驗 獲得超4個贊
Constder 使用專門的包來解析 HTML。通常,HTML 不是 XML(XHTML 1.0 是,但使用它格式化的文檔并不常見,該標準已被棄用)。
在我看來,一個更好的方法(考慮到您的明顯用例)是使用XPath通過查詢來提取必要的信息。
至于所述的問題,我認為沒有內(nèi)置的方法可以做你想做的事:xml.Decoder
實現(xiàn)Skip()
方法但它只允許你跳過不需要的內(nèi)容;沒有任何東西按原樣返回“內(nèi)部 XML”。您可以通過使用xml.Decoder
's自己滾動它RawToken()
:通過立即呈現(xiàn)它返回的任何內(nèi)容,直到它返回您正在尋找的表示和結(jié)束元素的內(nèi)容(您必須實現(xiàn)對處理嵌套元素的支持)。
- 2 回答
- 0 關(guān)注
- 259 瀏覽
添加回答
舉報
0/150
提交
取消