加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang解析xml namespace prefix的bug

发布时间:2020-12-16 18:06:41 所属栏目:大数据 来源:网络整理
导读:https://github.com/golang/go/issues/11496 示例使用链接中的示例,我遇到的问题跟这个一样 person xmlns:ns="ns" ns:nameOliver/ns:name ns:phone110/ns:phone/person 解析结构体定义如下 type Person struct { XMLName xml.Name `xml:"ns person"` Name st

https://github.com/golang/go/issues/11496

示例使用链接中的示例,我遇到的问题跟这个一样

<person xmlns:ns="ns">
  <ns:name>Oliver</ns:name>
  <ns:phone>110</ns:phone>
</person>

解析结构体定义如下
type Person struct {
    XMLName xml.Name `xml:"ns person"`
    Name    string   `xml:"ns name"`
    Phone   string   `xml:"ns phone"`
}

Marshal后结果如下
<person xmlns="ns">
  <name xmlns="ns">Oliver</name>
  <phone xmlns="ns">110</phone>
</person>

以上是golang的一个bug,最新1.9仍然会出现,目前解决办法UnMarshal和Marshal的结构体不能一致.

UnMarshal

type Person struct {
    XMLName xml.Name `xml:"person"`

    Name    string   `xml:"name"`
    Phone   string   `xml:"phone"`
}


Marshal

type Person2 struct {
    XMLName xml.Name `xml:"ns:person"`
    NS string `xml:"xmlns:ns,attr"`

    Name    string   `xml:"ns:name"`
    Phone   string   `xml:"ns:phone"`
}
NS变量在调用Marshal前赋值,然后把Person的数据拷贝到Person2中即可,十分麻烦哎.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读