1
假設我有以下xml數據塊。僅使用一種結構類型重組xml,以編組/去編組
<Result>
<person>
<name>Dave</name>
</person>
<id>
<number>1234</number>
</id>
</Result>
我想將其重構爲以下內容。
<Restructured>
<Person>Dave</Person>
<Id>1234</Id>
</Restructured>
但只使用一個結構來做到這一點。可能嗎?
下面附上代碼。
package main
import (
"encoding/xml"
"fmt"
"os"
)
type Result struct {
Person string `xml:"person>name"`
Id int `xml:"id>number"`
}
type Restructured struct {
Person string
Id int
}
const data = `
<Result>
<person>
<name>Dave</name>
</person>
<id>
<number>1234</number>
</id>
</Result>`
func main() {
v := Result{}
err := xml.Unmarshal([]byte(data), &v)
if err != nil {
fmt.Printf("error: %v", err)
return
}
newV := Restructured{Person: v.Person, Id: v.Id}
output, err := xml.MarshalIndent(newV, " ", " ")
if err != nil {
fmt.Printf("error: %v\n", err)
}
os.Stdout.Write(output)
}
我不想這樣做,分配一個新類型的結構(「newV」)和複製字段。 有沒有什麼辦法自動用不同的xml標籤使用原始結構「v」進行編組?
爲什麼(聯合)元帥呢?解析XML並即時輸出新結構。 – Volker
只是不想手動解析XML。我目前的XML數據比上面的例子更復雜:)。到目前爲止,似乎「手動解析xml」或「使用第二個結構」是我唯一的選擇... – jihoonc