2015-01-19 4 views
-2

나는 내가 마샬링 할 struct 작은 비 정렬 화는 encoding/xml 패키지를 사용하여이 : 나는 encoding/json 패키지를 사용할 때비 정렬 화 XML은()

type Point struct { 
    X, Y int 
    z  int // unexported 
    Names []string 
} 

인코딩/디코딩이 잘 작동합니다.

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) 

가 왜 :

invalid character '<' looking for beginning of value 

이 내가 XML을 위해 그것을 할 방법이다 : 나는 encoding/xml 패키지를 사용할 때

는하지만, 단지 xml.Marshal() 작품의 xml.Unmarshal()는 오류를 반환 이 오류가 발생하고 xml.Marshal()에 의해 반환 된 XML 출력을 어떻게 비 정렬화할 수 있습니까?

여기에 시도해 볼 수있는 Go Playground의 완전한 실행 가능한 응용 프로그램이 있습니다. 응용 프로그램의

출력 : 그것은 JSON 인 것처럼 당신은 비 정렬 화 XML하려고하는

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 []} 

답변

3

. 먼저

err = xml.Unmarshal(data, &pXml) 
+0

OMG, 이러한 사소한 실수를해야한다 코드에

data, err := xml.Marshal(p) 

다음

err = json.Unmarshal(data, &pXml) 

라인 (46)을하고 나는 그것을 찾을 수 없습니다. 감사. – icza