import ( "fmt" "gopkg.in/xmlpath.v2" "log")...path := xmlpath.MustCompile("//div[@id='23']")tree, err := xmlpath.ParseHTML(reader)if err != nil { log.Fatal("HTML parsing error, maybe not wellformed", err)}iter := path.Iter(tree)for iter.Next() { fmt.Println(iter.Node().String()) // returns only the values of the text-node}...有没有办法转换iter.Node()回 html 标记之类的<div>...</div>?iter.Node().String()仅返回所有内部文本节点的值。据我所知,xmlpath-package的文档没有提供这样的功能。
2 回答
largeQ
TA贡献2039条经验 获得超7个赞
你是对的 -gopkg.in/xmlpath.v2
功能仅限于读取节点的内容。在 Go 中使用 DOM 的替代方案并不多。
在本机 Go 库中,我只能提到goquery。它仅适用于 HTML,不支持 XPath 但支持 CSS 选择器。也许这对你来说就足够了。
如果您真的需要通过 XPath 处理 HTML 和 XML,那么 Go 的 libxml 包装器称为gokogiri。它支持 libxml 的所有功能,因此您可以获取节点、内部/外部 HTML、属性和其他内容。我用它来提取当前处于生产状态的一项服务中的文本内容。它比 PHP 的 DOMDocument 快一点。只有一个限制是我不确定它是否支持高于 1.4.* 的 Go 版本。哦,在 Windows 上安装有点棘手。
- 2 回答
- 0 关注
- 235 浏览
添加回答
举报
0/150
提交
取消