猿问

如何使用 gokogiri (libxml2) 解析带有命名空间的 xml?

我正在使用github.com/moovweb/gokogiri解析 XML 文档。以下在解析var b时有效,但是当我在var a(具有命名空间)上尝试相同的操作时,我没有得到任何输出。如何使用 解析具有命名空间的 XML gokogiri?


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)”


侃侃无极
浏览 151回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答