为了账号安全,请及时绑定邮箱和手机立即绑定

从 xml.Marshal() 的结果解组 XML

从 xml.Marshal() 的结果解组 XML

Go
拉风的咖菲猫 2021-09-10 21:49:19
我有一个小文件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)


查看完整回答
反对 回复 2021-09-10
  • 1 回答
  • 0 关注
  • 248 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信