猿问

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

我有一个小文件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 []}


拉风的咖菲猫
浏览 249回答 1
1回答

繁星点点滴滴

您正在尝试将 XML 解组为 JSON。首先你做data,&nbsp;err&nbsp;:=&nbsp;xml.Marshal(p)进而err&nbsp;=&nbsp;json.Unmarshal(data,&nbsp;&pXml)代码中的第 46 行应该是err&nbsp;=&nbsp;xml.Unmarshal(data,&nbsp;&pXml)
随时随地看视频慕课网APP

相关分类

Go
我要回答