如何解析具有各种元素的巨大XML文件(即不重复多次相同的元素).
例:
<stuff>
<header>...</header>
<item>...</item>
...
<item>...</item>
<something>...</sometihng>
</stuff>
Run Code Online (Sandbox Code Playgroud)
我想在Go中编写一个脚本,允许我将该文件拆分为多个较小的文件,每个文件具有特定数量的标签.有关如何使用Go解析XML的所有示例似乎都依赖于了解文件中的元素.
可以在不知道的情况下解析文件吗?对于XML中的每个元素,无论有什么元素(标题,项目,某些东西等等)都有类似的东西
Cer*_*món 14
使用标准的xml解码器.
调用令牌逐个读取令牌.找到感兴趣的起始元素时,调用DecodeElement将元素解码为Go值.
这是如何使用解码器的草图:
d := xml.NewDecoder(r)
for {
t, tokenErr := d.Token()
if tokenErr != nil {
if tokenErr == io.EOF {
break
}
// handle error
}
switch t := t.(type) {
case xml.StartElement:
if t.Name.Space == "foo" && t.Name.Local == "bar" {
var b bar
if err := d.DecodeElement(&b, &t); err != nil {
// handle error
}
// do something with b
}
}
}
Run Code Online (Sandbox Code Playgroud)