这样的xml老的GetRootElementName函数解析不了
func GetRootElementName(data string) string {
type Root struct {
XMLName xml.Name // 这个字段会存储根元素的名称
Content interface{} xml:",innerxml" // 如果需要完整内容
}
var root Root
decoder := xml.NewDecoder(strings.NewReader(data))
decoder.CharsetReader = func(charset string, input io.Reader) (io.Reader, error) {
switch charset {
case "GB2312", "GBK":
// GB2312 和 GBK 都可以用 GBK 解码器处理
return simplifiedchinese.GBK.NewDecoder().Reader(input), nil
default:
return nil, fmt.Errorf("unsupported charset: %s", charset)
}
}
err := decoder.Decode(&root)
if err != nil {
return ""
}
return root.XMLName.Local
} 直接这样来解析xml会好一点吧
func GetRootElementName(data string) string {
type Root struct {
XMLName xml.Name // 这个字段会存储根元素的名称
Content interface{}
xml:",innerxml"// 如果需要完整内容}
var root Root
decoder := xml.NewDecoder(strings.NewReader(data))
decoder.CharsetReader = func(charset string, input io.Reader) (io.Reader, error) {
switch charset {
case "GB2312", "GBK":
// GB2312 和 GBK 都可以用 GBK 解码器处理
return simplifiedchinese.GBK.NewDecoder().Reader(input), nil
default:
return nil, fmt.Errorf("unsupported charset: %s", charset)
}
}
err := decoder.Decode(&root)
if err != nil {
return ""
}
return root.XMLName.Local
} 直接这样来解析xml会好一点吧