作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
如何解析包含各种元素(即不同元素重复多次)的巨大 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/
我是一名优秀的程序员,十分优秀!