1 回答
TA贡献1863条经验 获得超2个赞
标准库足以完成这项任务。简单地解析 XML 文档,使用xml:",innerxml"Body 元素在其中使用任意 XML。然后你可以把它吐出来。
package main
import (
"bytes"
"encoding/xml"
"io"
"log"
"os"
)
var src = []byte(`
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.opentravel.org/OTA/2003/05">
<soap:Header/>
<soap:Body>
<contents>
<article>
<category>Server</category>
<title>Connect to Oracle Server using Golang and Go-OCI8 on Ubuntu</title>
<url>/go-oci8-oracle-linux/</url>
</article>
<!-- ... -->
</contents>
</soap:Body>
</soap:Envelope>
`)
type envelope struct {
XMLName xml.Name `xml:"Envelope"`
Body struct {
InnerXML []byte `xml:",innerxml"`
}
}
func main() {
var e envelope
if err := xml.Unmarshal(src, &e); err != nil {
log.Fatal(err)
}
io.WriteString(os.Stdout, xml.Header)
os.Stdout.Write(bytes.TrimSpace(e.Body.InnerXML))
}
在操场上试试:https://go.dev/play/p/CUEpuPfh_Xl
- 1 回答
- 0 关注
- 137 浏览
添加回答
举报