Unmarshal XML-документ с xmlns пространствами имен
61
8
Я хочу развязать RDF-документ, который выглядит симпатичным:
<?xml version="1.0" encoding="WINDOWS-1252"?>
<rdf:RDF xmlns:owl = "http://www.w3.org/2002/07/owl#"
xmlns:rdf = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
<!-- other xml element -->
</rdf:RDF>
Я использую этот тип для unmarchal в:
type wsdlDoc struct {
XMLName xml.Name 'xml:"rdf:RDF"'
Name string 'xml:"grounding:hasAtomicProcessGrounding"'
}
фрагмент кода для этого:
// you should import "github.com/rogpeppe/go-charset/charset"
// and _ "github.com/rogpeppe/go-charset/data"
dec := xml.NewDecoder(file)
dec.CharsetReader = charset.NewReader
var v wsdlDoc
err = dec.Decode(&v)
if err != nil {
panic(err)
}
Когда я запускаю код, паника печатает эту ошибку:
panic: expected element type <rdf:RDF> but have <RDF>
Как справиться с этим случаем unmarshaling?
спросил(а)
2015-11-11T20:45:00+03:00
5 лет, 3 месяца назад
добавить комментарий
пожаловаться
Решение
95
Пространства имен обозначаются их URL-адресом и отделены от имен пробелом, поэтому ваша структура должна быть больше похожа на
type wsdlDoc struct {
XMLName xml.Name 'xml:"http://www.w3.org/1999/02/22-rdf-syntax-ns# RDF"'
// ...
}
Пример игровой площадки: http://play.golang.org/p/tYVm2h6cIm.
ответил(а)
2015-11-11T20:59:00+03:00
5 лет, 3 месяца назад
добавить комментарий
пожаловаться
Ваш ответ