Golang,解析xml来构造?

标签 go xml-parsing

我有这样的 xml 文档,我需要获取一个 DATA 数组。我无法在 4 小时内解决这个简单的任务....想回到 node.js :-)

<?xml version="1.0" standalone="no"?>
<RETS ReplyCode="0" ReplyText="Operation Successful" >
<COUNT Records="58951" />
<DELIMITER value="09"/>
<COLUMNS>   LN  </COLUMNS>
<DATA>  09361303    </DATA>
<DATA>  09333085    </DATA>
<MAXROWS/>

type DATA struct {
    DATA string `xml:"DATA"`
}

type Rets struct {
    DATA []DATA `xml:"RETS>DATA"`
}


data := &Rets{}
decoder := xml.Unmarshal(body,&data)

fmt.Println(decoder)

最佳答案

有几个工具可以将 XML 转换为 Go 结构。适合阅读的是zek (试试看 online ),虽然它是实验性的,但它已经可以处理几个常见的 XML 结构。

您可以从 XML file ( raw ) 到一个简单命令的结构:

$ curl -sL https://git.io/fN4Pq | zek -e -p -c

这将创建一个结构加上一个 example program用于测试编码(该示例做的很少,它从标准输入读取 XML 并将其转换为 JSON )。

这是一个示例结构(对于某些 XML,取自 this repo ):

// RETS was generated 2018-09-07 12:11:10 by tir on apollo.local.
type RETS struct {
    XMLName       xml.Name `xml:"RETS"`
    Text          string   `xml:",chardata"`
    ReplyCode     string   `xml:"ReplyCode,attr"`
    ReplyText     string   `xml:"ReplyText,attr"`
    METADATATABLE struct {
        Text     string   `xml:",chardata"`
        Resource string   `xml:"Resource,attr"`
        Class    string   `xml:"Class,attr"`
        Version  string   `xml:"Version,attr"`
        Date     string   `xml:"Date,attr"`
        COLUMNS  string   `xml:"COLUMNS"` // MetadataEntryID    SystemNam...
        DATA     []string `xml:"DATA"`    // 7  City        City    Ci ...
    } `xml:"METADATA-TABLE"`
}

免责声明:我写了 zek。

关于Golang,解析xml来构造?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40095427/

相关文章:

java - SAXParser 不从 URL 检索 XML 数据

python - 使用 lxml.objectify 删除 "xmlns:py..."

database - Go 语言,使用 sqlx.StructScan 扫描嵌入式结构

go - 在Goroutine : why should this work?中推迟对sync.WaitGroup.Wait()的调用

xml - 使用分号;在 XML 中为属性提供多个值

java - 从 XML 中多次提取数据的最佳且优化的方法是什么?

oracle - Spring 3 xml解析器问题-XSDException

go - 如何在使用 gorm 插入时跳过结构中的特定字段

tsql - 是否可以在一次交易中调用Go函数?

go - 使用 golang 在 gcp 中创建实例时添加启动脚本