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)

  

在上面是将文件写到文件,有时需要将内容再请求第三方服务器,那么接上下面的代码

https://github.com/imroc/req

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)
posted @ 2020-04-30 21:56  你好啊,再见了  阅读(2363)  评论(0编辑  收藏  举报