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)

浙公网安备 33010602011771号