在
Python,PHP和许多其他语言中,可以转换html文档并“美化”它.在Go中,使用MarshIndent函数可以非常轻松地完成JSON和XML(来自结构/接口).
Go中的XML示例:
http://play.golang.org/p/aBNfNxTEG1
package main import ( "encoding/xml" "fmt" "os" ) func main() { type Address struct { City,State string } type Person struct { XMLName xml.Name `xml:"person"` Id int `xml:"id,attr"` FirstName string `xml:"name>first"` LastName string `xml:"name>last"` Age int `xml:"age"` Height float32 `xml:"height,omitempty"` Married bool Address Comment string `xml:",comment"` } v := &Person{Id: 13,FirstName: "John",LastName: "Doe",Age: 42} v.Comment = " Need more details. " v.Address = Address{"Hanga Roa","Easter Island"} output,err := xml.MarshalIndent(v," "," ") if err != nil { fmt.Printf("error: %v\n",err) } os.Stdout.Write(output) }
但是,这仅适用于将struct / interface转换为[]字节.我想要的是自动转换一串HTML代码和缩进.例:
原始HTML
<!doctype html><html><head> <title>Website Title</title> </head><body> <div class="random-class"> <h1>I like pie</h1><p>It's true!</p></div> </body></html>
Prettified HTML
<!doctype html> <html> <head> <title>Website Title</title> </head> <body> <div class="random-class"> <h1>I like pie</h1> <p>It's true!</p> </div> </body> </html>
如何使用字符串完成这项工作?