使用根级元素进行XML解析

huangapple go评论82阅读模式
英文:

XML parsing with a root level element

问题

可以解析根级别的XML元素吗?

这个XML没有任何包装器 <message att='Hello'/>

var x = Xml{}
xml.Unmarshal([]byte(`<message att='Hello'/>`), &x)
fmt.Println(x)

Xml结构体

type Xml struct {
    Message struct {
        Att string `xml:"att,attr"`
    } `xml:"message"`
}
英文:

Is it possible to parse root level XML elements?

This XML is without any wrapper &lt;message att=&#39;Hello&#39;/&gt;

var x = Xml{}
xml.Unmarshal([]byte(`&lt;message att=&#39;Hello&#39;/&gt;`), &amp;x)
fmt.Println(x)

Xml Struct

type Xml struct {
	Message struct {
		Att string `xml:&quot;att,attr&quot;`
	} `xml:&quot;message&quot;`
}

答案1

得分: 1

是的,你可以这样做。只需移除包装的 Xml 元素,并直接解组 Message

type Message struct {
    Att string `xml:"att,attr"`
}

var x = Message{}
err := xml.Unmarshal([]byte(`<message att='Hello'/>`), &x)
if err != nil {
    panic(err)
}
fmt.Println(x)

你可以在这个链接中查看示例代码:https://play.golang.org/p/EdtaWLm6Cl

英文:

Yes, you can do this. Simply remove the wrapping Xml element and unmarshal Message directly:

type Message struct {
	Att string `xml:&quot;att,attr&quot;`
}

<!-- -->

var x = Message{}
err := xml.Unmarshal([]byte(`&lt;message att=&#39;Hello&#39;/&gt;`), &amp;x)
if err != nil {
	panic(err)
}
fmt.Println(x)

https://play.golang.org/p/EdtaWLm6Cl

huangapple
  • 本文由 发表于 2017年3月15日 06:06:38
  • 转载请务必保留本文链接:https://go.coder-hub.com/42797465.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定