2016-09-20 3 views
2

У меня есть следующий XML:Анализировать XML в Go

<?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"` 
} 

Там нет ошибки выброшена, но значения в результате struct пусты. Я попробовал несколько примеров, которые я нашел в Интернете, но я новичок в 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

Работает как шарм. Спасибо! –

Смежные вопросы