我尝试使用“encoding/xml”包的 xml.Unmarshal 解组 XML 文件。
XML 文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>frames</key>
<dict>
<key>0</key>
<dict>
<key>frame</key>
<string>{{0, 0}, {81, 145}}</string>
<key>offset</key>
<string>{0, 0}</string>
<key>rotated</key>
<false/>
<key>sourceColorRect</key>
<string>{{0, 0}, {80, 145}}</string>
<key>sourceSize</key>
<string>{81, 145}</string>
<key>aliases</key>
<array>
</array>
</dict>
<key>1</key>
我定义了两个结构:
// types for createfont command
type Characters struct {
XMLName xml.Name `xml:"dict"`
Char []string `xml:"key"`
}
type Result struct {
Plist string `xml:"plist"`
XMLName xml.Name `xml:"dict"`
Keys []string `xml:"key"`
Chars []Characters `xml:"dict"`
}
并用这个解组:
v := Result{}
err = xml.Unmarshal([]byte(data), &v)
if err != nil {
fmt.Printf("error: %v", err)
return
} else {
fmt.Println("Result",v)
}
结果我得到:
error: expected element type <dict> but have <plist>
如果我删除 XML 文件和结构中的 plist 行,它就可以正常工作。
我该怎么写,才能让它进来?
梵蒂冈之花
相关分类