英文:
Add correct indentation to XML string
问题
我们有一个使用XML的遗留系统,其中XML不够美观(即整个文件没有换行符)。
在Go语言中,是否有一种内置/本地的方法来实现XML的美化打印?如果没有,那么如何实现这一点?
英文:
We've got a legacy system with XML where the XML is not pretty (i.e. entire file has no line breaks).
Is there a built in/native way to achieve pretty printing of XML in go? If not how does one go about achieving this?
答案1
得分: 4
你可以使用xml.MarshalIndent
进行格式化,例如:
package main
type xmldoc struct { ........ 字段 ...... }
func main() {
var doc xmldoc
err := xml.Unmarshal([]byte(xml-data), &doc)
if err != nil {
fmt.Printf("错误:%v", err)
return
}
out, err := xml.MarshalIndent(doc, "", "\t")
if err != nil {
fmt.Printf("错误:%v", err)
return
}
fmt.Println(out)
}
或者你可以在命令行中使用xmlint
:
$ xmllint --format --recover file.xml > formatted.xml
或者批量处理可以参考这个链接:https://stackoverflow.com/questions/20577191/format-all-xml-files-in-a-directory-and-save-them-in-a-subdirectory
英文:
You can use xml.MarshalIndent
, for example :
package main
type xmldoc struct { ........ fields ...... }
func main() {
var doc xmlDoc
err := xml.Unmarshal([]byte(xml-data), &doc)
if err != nil {
fmt.Printf("error: %v", err)
return
}
out, err := xml.MarshalIndent(doc, "", "\t")
if err != nil {
fmt.Printf("error: %v", err)
return
}
fmt.Println(out)
}
or from the command line you can always use xmlint
:
$ xmllint --format --recover file.xml > formatted.xml
or do it in bulk check https://stackoverflow.com/questions/20577191/format-all-xml-files-in-a-directory-and-save-them-in-a-subdirectory
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论