golang解析xml namespace prefix的bug

前端之家收集整理的这篇文章主要介绍了golang解析xml namespace prefix的bug前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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中即可,十分麻烦哎. 原文链接:https://www.f2er.com/go/188046.html

猜你在找的Go相关文章