为XML字符串添加正确的缩进。

huangapple go评论85阅读模式
英文:

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

huangapple
  • 本文由 发表于 2014年5月29日 07:52:52
  • 转载请务必保留本文链接:https://go.coder-hub.com/23923671.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定