从 xml.Marshal() 的结果中解组 XML
Unmarshalling XML from result of xml.Marshal()
我有一个小的 struct
,我想使用 encoding/xml
包编组和解组:
type Point struct {
X, Y int
z int // unexported
Names []string
}
当我使用 encoding/json
包时,encoding/decoding 工作正常。
但是当我使用 encoding/xml
包时,只有 xml.Marshal()
有效, xml.Unmarshal()
returns 错误:
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.Marshal()
返回的 XML 输出?
这是 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 []}
您正在尝试解组 XML,就好像它是 JSON。你先做
data, err := xml.Marshal(p)
然后
err = json.Unmarshal(data, &pXml)
您代码中的第 46 行应该是
err = xml.Unmarshal(data, &pXml)
我有一个小的 struct
,我想使用 encoding/xml
包编组和解组:
type Point struct {
X, Y int
z int // unexported
Names []string
}
当我使用 encoding/json
包时,encoding/decoding 工作正常。
但是当我使用 encoding/xml
包时,只有 xml.Marshal()
有效, xml.Unmarshal()
returns 错误:
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.Marshal()
返回的 XML 输出?
这是 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 []}
您正在尝试解组 XML,就好像它是 JSON。你先做
data, err := xml.Marshal(p)
然后
err = json.Unmarshal(data, &pXml)
您代码中的第 46 行应该是
err = xml.Unmarshal(data, &pXml)