golang xml解析动态标记名
我必须解析遗留系统的xml输出,他们出于某种原因认为将值的ID添加为标记名是明智的 像这样:golang xml解析动态标记名,xml,go,xml-parsing,Xml,Go,Xml Parsing,我必须解析遗留系统的xml输出,他们出于某种原因认为将值的ID添加为标记名是明智的 像这样: <ValueList> <ArraySize>2</ArraySize> <v89BNZMpdlWXkuv>value1</v89BNZMpdlWXkuv> <v89N83oCrGhI7jh>value2</v89N83oCrGhI7jh> </ValueList> 我已经开始使用自定义解组功能
<ValueList>
<ArraySize>2</ArraySize>
<v89BNZMpdlWXkuv>value1</v89BNZMpdlWXkuv>
<v89N83oCrGhI7jh>value2</v89N83oCrGhI7jh>
</ValueList>
我已经开始使用自定义解组功能
func (vl *ValueList) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error {
...
}
从xml.Decoder
获取令牌,但这很难看。有更好的方法吗?是的,您可以用来解析XML和提取数据,甚至是动态标记名。代码如下:
type ValueList struct {
Values []Value
}
type Value struct {
ID string
Value String
}
doc,err:=xmlquery.Parse(`<xml>..`)
node:=xmlquery.FindOne(doc,"//ValueList")
// Travel all child-node of ValueList
for n:=node.FirstChild;n!=nil;n=n.NextSibling{
fmt.Println(n.Data) // Ouptut name: ArraySize,v89BNZMpdlWXkuv,v89N83oCrGhI7jh
fmt.Println(n.InnerText())// Value of child-node.
}
doc,err:=xmlquery.Parse(`..`)
节点:=xmlquery.FindOne(doc,//ValueList)
//ValueList的所有子节点
对于n:=node.FirstChild;n=无n=n.NextSibling{
fmt.Println(n.Data)//输出名称:ArraySize,v89BNZMpdlWXkuv,v89N83oCrGhI7jh
fmt.Println(n.InnerText())//子节点的值。
}
希望可以帮助您。如果您不想将其存储在结构中,可以参考以下内容: 它基本上接收XML并返回一个映射,其中键是标记名,值是标记值 在您的情况下,生成的映射将是:
{
"ValueList>ArraySize":"2",
"ValueList>v89BNZMpdlWXkuv":"value1",
"ValueList>v89N83oCrGhI7jh":"value2"
}
密钥的分隔符可以作为参数发送。这里的符号“>”是作为参数发送的分隔符。您是否尝试了
xml:,any“
?这就是答案!我不知道关于xml:,any“
,并且已经处理这个问题太久了:/谢谢