Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
golang xml解析动态标记名_Xml_Go_Xml Parsing - Fatal编程技术网

golang xml解析动态标记名

golang xml解析动态标记名,xml,go,xml-parsing,Xml,Go,Xml Parsing,我必须解析遗留系统的xml输出,他们出于某种原因认为将值的ID添加为标记名是明智的 像这样: <ValueList> <ArraySize>2</ArraySize> <v89BNZMpdlWXkuv>value1</v89BNZMpdlWXkuv> <v89N83oCrGhI7jh>value2</v89N83oCrGhI7jh> </ValueList> 我已经开始使用自定义解组功能

我必须解析遗留系统的xml输出,他们出于某种原因认为将值的ID添加为标记名是明智的

像这样:

<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“
,并且已经处理这个问题太久了:/谢谢