Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不使用Prolog进行XML解析_Xml_Go_Xml Parsing - Fatal编程技术网

不使用Prolog进行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>

最近我开始使用围棋。我在解析XML时面临一个问题

问题是:

我成功地解析了以下XML:

<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)