不使用Prolog进行XML解析
最近我开始使用围棋。我在解析XML时面临一个问题 问题是: 我成功地解析了以下XML:不使用Prolog进行XML解析,xml,go,xml-parsing,Xml,Go,Xml Parsing,最近我开始使用围棋。我在解析XML时面临一个问题 问题是: 我成功地解析了以下XML: <Root> <cookie name="e1">hsdhsdhs</cookie> <cookie name="e2">sssss</cookie> <cookie name="e3">null</cookie> <info> <name>sam</name> </info>
<Root>
<cookie name="e1">hsdhsdhs</cookie>
<cookie name="e2">sssss</cookie>
<cookie name="e3">null</cookie>
<info>
<name>sam</name>
</info>
</Root>
上述结构工作正常
profile := Profile{}
xml.Unmarshal([]byte(xmlString), &profile)
jsonData, _ := json.Marshal(profile)
fmt.Println(string(jsonData))
但当我用XML保存序言时:
<?xml version="1.0" encoding="EUC-JP"?>
<Root>
<cookie name="e1">hsdhsdhs</cookie>
<cookie name="e2">sssss</cookie>
<cookie name="e3">null</cookie>
<info>
<name>sam</name>
</info>
</Root>
hsdhsdhs
SSS
无效的
山姆
然后在打印时,JSON中没有显示任何数据
不确定Prolog的问题是什么。在解析非utf8 xml文档之前,您必须定义字符集读取器,这要感谢
golang.org/x/net/html/charset
,您只需替换此字符串即可:
xml.Unmarshal([]byte(xmlString), &profile)
与:
将编码更改为utf-8..是。然后它就开始工作了。但是我需要它用于EUC-JP。看起来问题在于使用EUC进行解析-JP@MaruthiAdithya添加了解决问题的信息,但我发现了一个问题,如果名称中有一些日语字符(例如-サム ) 在“信息”下,它以奇怪的方式打印。我猜它打印的是二进制字符。@nagendra547我刚刚用xml测试了这些符号,并用json输出了很好的结果。您所说的“名称”是指info标记下
cookie
tag?name的name属性
xml.Unmarshal([]byte(xmlString), &profile)
decoder := xml.NewDecoder(bytes.NewBufferString(xmlString))
decoder.CharsetReader = charset.NewReaderLabel
err := decoder.Decode(&profile)