我有一个小文件struct,我想使用该encoding/xml包进行编组和解组:
type Point struct {
X, Y int
z int // unexported
Names []string
}
当我使用encoding/json包时,编码/解码工作正常。
但是当我使用这个encoding/xml包时,只有xml.Marshal()作品,xml.Unmarshal()返回一个错误:
invalid character '<' looking for beginning of value
这就是我对 XML 的处理方式:
p := Point{1, 2, 3, []string{"Bob", "Alice"}}
data, err := xml.Marshal(p)
if err != nil {
fmt.Println("Error:", err)
}
fmt.Println("XML:", string(data))
var pXml Point
err = json.Unmarshal(data, &pXml)
if err != nil {
fmt.Println("Error:", err)
}
fmt.Println("Unmarshalled XML:", pXml)
为什么会出现此错误以及如何解组由 返回的 XML 输出xml.Marshal()?
这是Go Playground上完整的、可运行的应用程序,供您试用。
应用程序的输出:
Input: {1 2 3 [Bob Alice]}
JSON: {"X":1,"Y":2,"Names":["Bob","Alice"]}
Unmarshalled JSON: {1 2 0 [Bob Alice]}
XML: <Point><X>1</X><Y>2</Y><Names>Bob</Names><Names>Alice</Names></Point>
Error: invalid character '<' looking for beginning of value
Unmarshalled XML: {0 0 0 []}
繁星点点滴滴
相关分类