golang 处理xml 命名空间属性可能是bug

在用golang处理xml 命名空间属性,可能是个bug,golang 1.10.1

func main() {
 str :=`<?xml version="1.0" encoding="UTF-8"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
 <hello />
</epp>`
 doc:=xml.NewDecoder(strings.NewReader(str))
 for {
 t, err := doc.Token()
 if err!=nil{
     print(err.Error())
     break
 }
 switch to := t.(type) {
 case xml.StartElement:
     for _,v:=range to.Copy().Attr{
     fmt.Printf("space:%s--local:%s---value:%s\n",v.Name.Space,v.Name.Local,v.Value)
 }
 default:
 }
 }
}

得到的结果:

space:--local:xmlns---value:urn:ietf:params:xml:ns:epp-1.0
space:xmlns--local:xsi---value:http://www.w3.org/2001/XMLSchema-instance
space:http://www.w3.org/2001/XMLSchema-instance--local:schemaLocation---value:urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd

在解析 xsi:schemaLocation 这个名称的时候返回的不对了。感觉是个BUG,有新的发现在更新。

发表评论

电子邮件地址不会被公开。 必填项已用*标注