我有一个小文件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 Pointerr = 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 valueUnmarshalled XML: {0 0 0 []}
1 回答
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
您正在尝试将 XML 解组为 JSON。首先你做
data, err := xml.Marshal(p)
进而
err = json.Unmarshal(data, &pXml)
代码中的第 46 行应该是
err = xml.Unmarshal(data, &pXml)
- 1 回答
- 0 关注
- 248 浏览
添加回答
举报
0/150
提交
取消