发布于 2015-05-17 10:39:05
在您的UnmarshalXML方法中,您调用xml.(*Decoder).DecodeElement,而后者又调用UnmarshalXML等。这将创建无限循环。要么创建包装器结构,要么在UnmarshalXML中只对结构的一部分进行封送。
编辑:如果您想要解除封送节点的所有属性,请参阅这个答案中的示例。
工作实例:
func (in *innerXml) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
in.XMLName = start.Name
in.Attrs = make(map[string]string)
for _, attr := range start.Attr {
in.Attrs[attr.Name.Local] = attr.Value
}
err := d.DecodeElement(&in.Value, &start)
if err != nil {
return err
}
return nil
}https://stackoverflow.com/questions/30285759
复制相似问题