golang解析XML文件
【摘要】 在用golang解析xml文件的时候,发现有两点需要注意,一个是xml内容的总标题需要在定义struct的时候指定,另外每个标签的名字的首字母必须要大写。如下(第一个例子):package mainimport ( "encoding/xml" "fmt" "log")type Result struct { XMLName xml.Name ...
在用golang解析xml文件的时候,发现有两点需要注意,一个是xml内容的总标题需要在定义struct的时候指定,另外每个标签的名字的首字母必须要大写。
如下(第一个例子):
package main
import (
"encoding/xml"
"fmt"
"log"
)
type Result struct {
XMLName xml.Name `xml:"Person"`
Name string `xml:"FullName"`
City string `xml:"city"`
Phone string `xml:"tel"`
}
func main() {
testXML := `
<Person>
<FullName>Grace R. Emlin</FullName>
<city>Hanga Roa</city>
<tel>8798732</tel>
</Person>`
var A_Iters Result
err := xml.Unmarshal([]byte(testXML), &A_Iters)
if err != nil{
log.Fatal(err)
}
fmt.Println(A_Iters)
fmt.Println(string(A_Iters.Phone))
}
该xml文件中有人名,城市,电话号码三个字段,建立一个名叫Result的struct用来保存解析后的内容。
如果需要读取xml内容,并解析,可以参考以下内容 (第二个例子 )
package main
import (
"encoding/xml"
"fmt"
//"io/ioutil"
//"os"
)
type BlastFmt struct {
XMLName xml.Name `xml:"Blastoutput"`
BlastOprog string `xml:"BlastOutput_program"`
BlastOver string `xml:"BlastOutput_version"`
BlastOqueryDef string `xml:"BlastOutput_querydef"`
BlastOqueryLen string `xml:"BlastOutput_querylen"`
}
func main() {
//xmlFile, err := os.Open("the_Simple.xml")
//if err != nil {
// fmt.Println(err)
//}
//defer xmlFile.Close()
//byteValue, _ := ioutil.ReadAll(xmlFile)
blastXML := `
<Blastoutput>
<BlastOutput_program>blastn</BlastOutput_program>
<BlastOutput_version>blastn 2.2.26</BlastOutput_version>
<BlastOutput_querydef>EGFR_A1</BlastOutput_querydef>
<BlastOutput_querylen>600</BlastOutput_querylen>
</Blastoutput>`
var blastIters BlastFmt
xml.Unmarshal([]byte(blastXML), &blastIters)
fmt.Println(blastIters)
fmt.Println(blastIters.BlastOver)
fmt.Println(blastIters.BlastOprog)
}
以上解析的是一个简单例子,目的是解析 blast的结果文件,一种xml格式的结果。
如果要解析更为复杂的xml文件, 或者xml转为json文件,可以参考
https://tutorialedge.net/golang/parsing-xml-with-golang/
https://www.thepolyglotdeveloper.com/2017/03/parse-xml-data-in-a-golang-application/
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)