为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
白猪掌柜的 2023-03-29 16:16:47
这是代码: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>
查看完整描述

1 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

转义<>字符对于有效的 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.


查看完整回答
反对 回复 2023-03-29
  • 1 回答
  • 0 关注
  • 73 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信