2016-09-20 60 views
2

我有下面的XML:解析XML围棋

<?xml version="1.0" encoding="utf-16"?> 
<ArrayOfAnyType xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <anyType xsi:type="xsd:dateTime">2016-09-14T13:58:30Z</anyType> 
    <anyType xsi:type="xsd:decimal">1.2</anyType> 
</ArrayOfAnyType> 

我试图把它解组到这个结构:

type Value struct { 
    XMLName xml.Name `xml:"ArrayOfAnyType"` 
    Data []Data `xml:"anyType"` 
} 

type Data struct { 
    Key string `xml:"xsi:type,attr"` 
    Value string `xml:",chardata"` 
} 

没有抛出错误,但由此产生的价值观结构是空的。我尝试了几个我在网上找到的例子,但我对Go很陌生,所以我可能会错过一些明显的东西。

+0

我第一次尝试使用go,改为utf-8:https://play.golang.org/p/nLrdzuUSo0 – Hackerman

回答

4

首先,你的文档声明它是用UTF-16编码的,这意味着你需要设置解码器的CharsetReader,或者删除它并将文档解释为UTF-8。

其次,您的xsi:type,attr应使用名称空间URL,因此它的编号为http://www.w3.org/2001/XMLSchema-instance type,attr

考虑到这两点,你的工作原理:https://play.golang.org/p/Nu3wyEQ_dO

+0

工程就像一个魅力。谢谢! –