猿问

func Encode(),编码xml的所有部分

这是代码:


import (

"bytes"

"encoding/xml"

"fmt")


func main() {

type body struct {

    Message string `xml:"message"`

}

myXml := body{

    Message:"This is <myText>",

}


    w := &bytes.Buffer{}

        enc := xml.NewEncoder(w)

        enc.Indent("", "  ")

        if err := enc.Encode(myXml); err != nil {

            panic(err)

        }

        request := w.String()

        fmt.Println(request)

    }

有什么方法可以使字段消息的值不编码。我不想编码。这是结果:


<body>

  <message>This is &lt;myText&gt;</message>

</body>


白猪掌柜的
浏览 74回答 1
1回答

心有法竹

转义<和>字符对于有效的 XML 是必须的。别担心, 的内容<message>将是This is <myText>,但此文本必须出现在This is &lt;myText&gt;XML 源中。请注意,使用xml:",innerxml"标记值,您可以强制输出原始 XML 数据,如记录在xml.Marshal():- a field with tag ",innerxml" is written verbatim, not subject  to the usual marshaling procedure.像这样:type rawxml struct {    Data string `xml:",innerxml"`}type body struct {    Message rawxml `xml:"message"`}myXml := body{    Message: rawxml{"This is <myText>"},}这将输出(在Go Playground上尝试):<body>  <message>This is <myText></message></body>Or implementing and using custom xml.Marshaler, but again, this is invalid XML, this is not what you want. What you have right now is exactly what you want.
随时随地看视频慕课网APP

相关分类

Go
我要回答