我正在使用
github.com/moovweb/gokogiri
来解析XML文档。在解析var b
时,以下方法有效,但是当我尝试对具有命名空间的var a
执行相同操作时,没有输出。如何使用gokogiri
解析具有命名空间的XML?package main
import (
"github.com/moovweb/gokogiri"
"github.com/moovweb/gokogiri/xpath"
"log"
)
func main() {
log.SetFlags(log.Lshortfile)
doc, _ := gokogiri.ParseXml([]byte(a))
defer doc.Free()
doc.SetNamespace("", "http://example.com/this")
x := xpath.Compile(".//NodeA/NodeB")
groups, err := doc.Search(x)
if err != nil {
log.Println(err)
}
for i, group := range groups {
log.Println(i, group)
}
}
var a = `<?xml version="1.0" ?><NodeA xmlns="http://example.com/this"><NodeB>thisthat</NodeB></NodeA>`
var b = `<?xml version="1.0" ?><NodeA><NodeB>thisthat</NodeB></NodeA>`
编辑#1:我也尝试了 doc.RegisterNamespace
但是得到了
doc.RegisterNamespace未定义(类型* xml.XmlDocument没有RegisterNamespace字段或方法)
x.RegisterNamespace
也会得到
x.RegisterNamespace未定义(类型*xpath.Expression没有RegisterNamespace字段或方法)