Prolog不会发生XML解析

问题描述 投票:1回答:1

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

这是问题:

我成功地解析了以下XML:

<Root>
<cookie name="e1">hsdhsdhs</cookie>
<cookie name="e2">sssss</cookie>
<cookie name="e3">null</cookie>
<info>
<name>sam</name>
</info>
</Root>

结构如下:

type Profile struct {
    RootElement xml.Name    `xml:"Root"`
    CookieList  []Cookie    `xml:"cookie"`
    Info        Information `xml:"info"`
}

type Cookie struct {
    Name  string `xml:"name,attr"`
    Value string `xml:",chardata"`
}

type Information struct {
    Name       string `xml:"name"`
}

上面的结构工作正常。

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>

然后在打印时,JSON内部没有显示任何数据。

不知道Prolog有什么问题。

xml go xml-parsing
1个回答
2
投票

在解析非utf8 xml文档之前,你必须使用charset reader,感谢golang.org/x/net/html/charset所有你需要做的就是替换这个字符串:

xml.Unmarshal([]byte(xmlString), &profile)

有:

decoder := xml.NewDecoder(bytes.NewBufferString(xmlString))
decoder.CharsetReader = charset.NewReaderLabel
err := decoder.Decode(&profile)
© www.soinside.com 2019 - 2024. All rights reserved.