这是代码:
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 <myText></message>
</body>
答案 0 :(得分:1)
使用encoding/xml
的目的是产生有效 XML文档。对于有效的XML,必须转义<
和>
字符。不用担心,<message>
的内容将是This is <myText>
,但是此文本在XML源中必须显示为This is <myText>
。
请注意,使用xml:",innerxml"
标签值可以强制输出xml.Marshal()
中记录的原始XML数据:
- 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>
或者实现并使用自定义xml.Marshaler
,但是这是无效的XML ,这不是您想要的。您现在拥有的正是您想要的。