我有这样的 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/