猿问

使用 encoding/xml.Encoder 如何将 xml 标头放在自己的行上?

我有以下使用xml.Encode.


package main


import (

    "bytes"

    "encoding/xml"

    "fmt"

)


type Stuff struct {

    Name string `xml:"name"`

}


func main() {

    w := &bytes.Buffer{}

    enc := xml.NewEncoder(w)

    enc.Indent("", "  ")

    procInst := xml.ProcInst{

        Target: "xml",

        Inst:   []byte("version=\"1.0\" encoding=\"UTF-8\""),

    }

    if err := enc.EncodeToken(procInst); err != nil {

        panic(err)

    }


    if err := enc.Encode(Stuff{"My stuff"}); err != nil {

        panic(err)

    }

    fmt.Println(w.String())

}

http://play.golang.org/p/ZtZ5FGABmj


它打印:


<?xml version="1.0" encoding="UTF-8"?><Stuff>

  <name>My stuff</name>

</Stuff>

如何<Stuff>在新行上使用开始标签打印它:


<?xml version="1.0" encoding="UTF-8"?>

<Stuff>

  <name>My stuff</name>

</Stuff>

不幸的是,我需要在这里写更多,以便我可以提交问题。虽然不太确定要写什么,因为我相信我的问题已经通过上述解释得到了充分的总结。


qq_遁去的一_1
浏览 191回答 1
1回答

子衿沉夜

自己写一个带有换行符的静态行怎么样?去游乐场w := &bytes.Buffer{}w.Write([]byte("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"))enc := xml.NewEncoder(w)enc.Indent("", "&nbsp; ")if err := enc.Encode(Stuff{"My stuff"}); err != nil {&nbsp; &nbsp; panic(err)}fmt.Println(w.String())这一行甚至在包中定义为常量xml,所以你可以简单地写:Go Playgroundw := &bytes.Buffer{}w.WriteString(xml.Header)
随时随地看视频慕课网APP

相关分类

Go
我要回答