golang对XML文档进行解析
先在这里打个地址,后面用到遇到什么问题再补上。
https://github.com/beevik/etree
//生成xml productXml:=etree.NewDocument() productXml.CreateProcInst("xml", `version="1.0" encoding="UTF-8"`) request:=productXml.CreateElement("Request") for i:=0; i<2;i++ { product:=request.CreateElement("Product") sk:=product.CreateElement("SellerSku") sk.CreateText("4105382173aaee4") product.CreateElement("ParentSku") } os.Remove("productXml.xml") productXml.WriteToFile("productXml.xml")
<?xml version="1.0" encoding="UTF-8"?> <Request> <Product> <SellerSku>4105382173aaee4</SellerSku> <ParentSku/> </Product> <Product> <SellerSku>4105382173aaee4</SellerSku> <ParentSku/> </Product> </Request>
有时要生成CDATA类型,那么直接用下面的代码
element=product.CreateElement("Description") element.CreateCData(item.Desc)
在上面是将文件写到文件,有时需要将内容再请求第三方服务器,那么接上下面的代码
stringXml,err:=productXml.WriteToString() if err!=nil{ return err } apiUrl:=s.buildPostRequest("ProductCreate") r, err := req.Post(apiUrl, req.BodyXML(stringXml)) if err != nil { utils.InnerLog.Errorln(err) return err } responseDoc := etree.NewDocument() if _,err := responseDoc.ReadFrom(r.Response().Body); err != nil { return err } utils.InnerLog.Errorln(responseDoc)