golang解析xml数据

golang解析xml数据

<?xml version="1.0" encoding="utf-8"?>
<AjaxResult>
  <state>200</state>
  <message>获取成功</message>
  <data>admin</data>
</AjaxResult>

构建结构体利用golang的xml.Unmarshal转换

	resdata := `<?xml version="1.0" encoding="utf-8"?>
<AjaxResult>
  <state>200</state>
  <message>获取成功</message>
  <data>admin</data>
</AjaxResult>`
	type xml2 struct {
		State   string `xml:"state"`
		Message string `xml:"message"`
		Data    string `xml:"data"`
	}

	x := xml2{}
	err = xml.Unmarshal([]byte(resdata), &x)
	if err != nil {
		fmt.Println(err.Error())
	} else {
		fmt.Println(x.Data)
	}
	//结果 admin
可以使用 Go 标准库中的 `encoding/xml` 和 `html/template` 包来实现将 XML 转换为 HTML 的功能。 首先,你需要定义一个结构体来存放 XML 数据,例如: ```go type Person struct { XMLName xml.Name `xml:"person"` Name string `xml:"name"` Age int `xml:"age"` } ``` 这个结构体对应一个 XML 格式的数据: ```xml <person> <name>John</name> <age>30</age> </person> ``` 接下来,你可以使用 `encoding/xml` 包中的 `Unmarshal` 函数将 XML 数据解析为结构体: ```go data := []byte(` <person> <name>John</name> <age>30</age> </person> `) var person Person err := xml.Unmarshal(data, &person) if err != nil { panic(err) } ``` 此时,`person` 变量就包含了 XML 数据的内容。 最后,你可以使用 `html/template` 包中的模板引擎来生成 HTML 代码: ```go templateStr := ` <html> <head> <title>{{.Name}}'s page</title> </head> <body> <h1>{{.Name}}</h1> <p>Age: {{.Age}}</p> </body> </html> ` t, err := template.New("webpage").Parse(templateStr) if err != nil { panic(err) } var buf bytes.Buffer err = t.Execute(&buf, person) if err != nil { panic(err) } htmlCode := buf.String() fmt.Println(htmlCode) ``` 在这个例子中,我们使用了一个简单的模板,将 XML 数据转换为 HTML 页面。`{{.Name}}` 和 `{{.Age}}` 是模板中的占位符,它们会被实际的数据替换掉。 完整的示例代码如下: ```go package main import ( "bytes" "encoding/xml" "fmt" "html/template" ) type Person struct { XMLName xml.Name `xml:"person"` Name string `xml:"name"` Age int `xml:"age"` } func main() { data := []byte(` <person> <name>John</name> <age>30</age> </person> `) var person Person err := xml.Unmarshal(data, &person) if err != nil { panic(err) } templateStr := ` <html> <head> <title>{{.Name}}'s page</title> </head> <body> <h1>{{.Name}}</h1> <p>Age: {{.Age}}</p> </body> </html> ` t, err := template.New("webpage").Parse(templateStr) if err != nil { panic(err) } var buf bytes.Buffer err = t.Execute(&buf, person) if err != nil { panic(err) } htmlCode := buf.String() fmt.Println(htmlCode) } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值