gpt4 book ai didi

go - 如何在 Go 中解析包含各种元素的巨大 XML 文件?

转载 作者:IT王子 更新时间:2023-10-29 00:34:27 24 4
gpt4 key购买 nike

如何解析包含各种元素(即不同元素重复多次)的巨大 XML 文件。

例子:

<stuff>
<header>...</header>
<item>...</item>
...
<item>...</item>
<something>...</sometihng>
</stuff>

我想用 Go 编写一个脚本,允许我将这个文件拆分为多个较小的文件,每个文件具有特定数量的标签。所有关于如何使用 Go 解析 XML 的示例似乎都依赖于了解文件中的元素。

是否可以在不知道的情况下解析文件?类似于 XML 中的每个元素,无论那里有什么元素(标题、项目、某物等)

最佳答案

使用标准xml Decoder .

调用Token一个一个地读取标记。当找到感兴趣的起始元素时,调用 DecodeElement将元素解码为 Go 值。

下面是如何使用解码器的草图:

d := xml.NewDecoder(r)
for {
t, tokenErr := d.Token()
if tokenErr != nil {
if tokenErr == io.EOF {
break
}
// handle error somehow
return fmt.Errorf("decoding token: %v", err)
}
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 somehow
return fmt.Errorf("decoding element %q: %v", t.Name.Local, err)
}
// do something with b
}
}
}

关于go - 如何在 Go 中解析包含各种元素的巨大 XML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36625345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com