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

xml.Unmarshal 错误:预期元素类型 <dict> 但有 <plist>

xml.Unmarshal 错误:预期元素类型 <dict> 但有 <plist>

Go
泛舟湖上清波郎朗 2021-09-20 15:02:13
我尝试使用“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 commandtype 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 行,它就可以正常工作。我该怎么写,才能让它进来?
查看完整描述

1 回答

?
梵蒂冈之花

TA贡献1900条经验 获得超5个赞

XMLName结构中字段的顺序无关紧要。解组只发生在字段名称和标签上,而不是顺序。

通过XMLName在类型中的任何位置声明整个类型应该属于/在该 XML 元素内。


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

添加回答

举报

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