golang把xml转换为html
时间: 2024-01-30 07:03:21 浏览: 103
用于golangHTML解组器-Golang开发
可以使用 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)
}
```
阅读全文