带有重复标签的 xml 解析

当 xml 提要在一个结构中有多个标签时,我在解析它时遇到问题:


<feed>

<entry>

:

:

</entry>

<entry>

:

:


</entry>

</feed>

在这种情况下,我通过定义 [] 条目的数组来解析条目没有问题,但是其中一个条目是地理编码标记,其 valuename 和 value 标记重复两次。在这种情况下如何定义结构。?


<geocode>

<valueName>abc</valueName>

<value>a1</value>

<valueName>def</valueName>

<value>d1</value>

</geocode>

这是我在https://play.golang.org/p/SE8RXTNbYl 上遇到问题的 go 程序


慕尼黑8549860
浏览 428回答 1
1回答

翻过高山走不出你

如果您在同一个父标签下有多个同名标签,您总是可以使用一个切片来保存所有出现的标签,无论它们是彼此相邻枚举还是在它们之间有其他标签。完整地说,这是您要解析的 XML 片段:<cap:geocode>&nbsp; &nbsp; <valueName>FIPS6</valueName>&nbsp; &nbsp; <value>002090 002290</value>&nbsp; &nbsp; <valueName>UGC</valueName>&nbsp; &nbsp; <value>AKZ222</value></cap:geocode>所以简单地改变你的geocode结构:type geocode struct {&nbsp; &nbsp; ValueName1 string `xml:"valueName"`&nbsp; &nbsp; Value1&nbsp; &nbsp; &nbsp;string `xml:"value"`&nbsp; &nbsp; ValueName2 string `xml:"valueName"`&nbsp; &nbsp; Value2&nbsp; &nbsp; &nbsp;string `xml:"value"`}对此:type geocode struct {&nbsp; &nbsp; ValueNames []string `xml:"valueName"`&nbsp; &nbsp; Values&nbsp; &nbsp; &nbsp;[]string `xml:"value"`}以及打印它们的代码:gc := v.Entries[0].Geocodelog.Println(len(gc.Values))log.Println(gc.ValueNames)log.Println(gc.Values)for i := range gc.Values {&nbsp; &nbsp; fmt.Printf("ValueName=%s, Value=%s\n", gc.ValueNames[i], gc.Values[i])}输出(在Go Playground上尝试修改后的源):2009/11/10 23:00:00 22009/11/10 23:00:00 [FIPS6 UGC]2009/11/10 23:00:00 [002090 002290 AKZ222]ValueName=FIPS6, Value=002090 002290ValueName=UGC, Value=AKZ222
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go