xml名称空间前缀问题随处可见

西达坦塔·拉斯(Siddhanta Rath):

编组和解组不能与xml名称空间前缀一起正常使用

转到1.9.2版,请参见以下代码:

package main

import (

    "fmt"
    "encoding/xml")

type DeviceId struct {
    XMLName      xml.Name `xml:"DeviceId"`
    Manufacturer string   `xml:"Manufacturer"`
    OUI          string   `xml:"OUI"`
    ProductClass string   `xml:"ProductClass"`
    SerialNumber string   `xml:"SerialNumber"`
}

type CwmpInform struct {
    XMLName xml.Name `xml:"cwmp:Inform"`
    DeviceId     DeviceId      
}


func main() {
    rq := new(CwmpInform)
    data := `<cwmp:Inform>
                <DeviceId>
                <Manufacturer></Manufacturer>
                <OUI>48BF74</OUI>
                <ProductClass>FAP</ProductClass>
                <SerialNumber>1202000042177AP0008</SerialNumber>
                </DeviceId>
              </cwmp:Inform>`

    xml.Unmarshal([]byte (data), rq)
    fmt.Printf("Unmarshelled Content:%v", rq)
    output, err := xml.MarshalIndent(rq,"  ", "  ")
    if err != nil{
    fmt.Printf("error : %v", err)
    }
    fmt.Printf("Marshelled Content: %s\n", string(output))
}

上面程序的输出,其中包含适当的编组内容和空白的带壳内容:

Unmarshelled Content:&{{ } {{ }    }}
 Marshelled Content: 
  <cwmp:Inform>
    <DeviceId>
      <Manufacturer></Manufacturer>
      <OUI></OUI>
      <ProductClass></ProductClass>
      <SerialNumber></SerialNumber>
    </DeviceId>
  </cwmp:Inform>

但是当我与结构的XML标签从改变xml:"cwmp:Inform"xml:"cwmp Inform",然后Unmarshelling情况正常,但我得到下面的Marshelled内容输出:

<Inform xmlns="cwmp">
    <DeviceId>
      <Manufacturer></Manufacturer>
      <OUI>48BF74</OUI>
      <ProductClass>FAP</ProductClass>
      <SerialNumber>1202000042177AP0008</SerialNumber>
    </DeviceId>
  </Inform>

<cwmp:Inform>我没有得到,而是得到<Inform xmlns="cwmp">

  • 有什么办法可以纠正带壳的内容Go语言问题吗?
ttomalak:

这里可能是相同的问题

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

要解决此问题,您需要使用两种结构,一种用于解组数据,第二种用于编组数据

type CwmpInformUnmarshal struct {
    XMLName  xml.Name `xml:"Inform"`
    DeviceId DeviceId
}

type CwmpInformMarshall struct {
    XMLName  xml.Name `xml:"cwmp:Inform"`
    DeviceId DeviceId
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Rails模型随处可见

如何使用 CDI 使单例实例随处可见?

HTML 页面中随处可见的随机 A

使用JSONField的属性对Django queryset进行排序,前提是该属性并非随处可见

OperationalError:没有这样的表:python书籍随处可见

C#.NET-PDFsharp和MigraDoc-随处可见的字体-庞大的文件大小

“自动换行” css属性中的“随处可见”是什么意思?

python 2.7 XML lxml名称空间前缀属性问题

如何创建一个内部类,其中只有外部类可以访问构造函数,而其余的随处可见?

我想添加一个字符串扩展方法。但是我应该在我的Xamarin Forms应用程序中将其添加到何处,以便它随处可见?

XML名称空间前缀冲突的XPath行为

名称空间中类的可见性

在具有名称空间前缀的元素内创建不带名称空间前缀的XML元素

LXML名称空间前缀

XML:从名称空间生成带有前缀的标签

XML中是否可以有多个名称空间前缀?

使用Unmarshal在Go中获取XML名称空间前缀

如何通过前缀获取xml文件的名称空间(常规)

更改使用JAXWS生成的默认XML名称空间前缀

XML:子节点是否继承父节点的名称空间前缀?

如何用内联xmlns声明替换XML名称空间前缀?

在Java DOM中创建以名称空间为前缀的XML节点

XML错误:前缀未绑定到名称空间,KML文件

如何使用XSLT删除特定xml元素的名称空间前缀?

如何使用Xstream从xml删除名称空间前缀?

在xml消息中插入几个带前缀的名称空间

从 MS SQL、结构问题、命名空间前缀生成 XML:

TD可见问题

xjb绑定文件的XML名称空间问题