func Encode(),对 xml 的所有部分进行编码
func Encode(), encoding all part of 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)
}
有没有什么方法可以让 message 字段的值不 encode.I 不编码。
这是结果:
<body>
<message>This is <myText></message>
</body>
encoding/xml
的任务是生成有效 XML 文档。转义 <
和 >
字符对于有效的 XML 是必须的。别担心,<message>
的内容将是 This is <myText>
,但此文本必须在 XML.
的来源中显示为 This is <myText>
请注意,使用 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>
或实施和使用自定义 xml.Marshaler
,但同样,这是无效的 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)
}
有没有什么方法可以让 message 字段的值不 encode.I 不编码。 这是结果:
<body>
<message>This is <myText></message>
</body>
encoding/xml
的任务是生成有效 XML 文档。转义 <
和 >
字符对于有效的 XML 是必须的。别担心,<message>
的内容将是 This is <myText>
,但此文本必须在 XML.
This is <myText>
请注意,使用 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>
或实施和使用自定义 xml.Marshaler
,但同样,这是无效的 XML,这不是您想要的。你现在拥有的,正是你想要的。