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)