如何将字符串转换为XML

如何将字符串转换为XML,xml,go,Xml,Go,我有一个字符串格式的XML,有人能帮我把XML字符串转换成正确的XML格式吗 package main import "fmt" func main() { message := `<?xml proflie ><test> value '123'</test>` fmt.Printf("%s", message) } 主程序包 输入“fmt” func main(){ 消息:=`value'12

我有一个字符串格式的XML,有人能帮我把XML字符串转换成正确的XML格式吗

package main

import "fmt"

func main() {

    message := `<?xml proflie ><test> value '123'</test>`
    fmt.Printf("%s", message)
}
主程序包
输入“fmt”
func main(){
消息:=`value'123'`
fmt.Printf(“%s”,消息)
}

编码/xml
包与
EscapeText
功能一起使用:

主程序包
进口(
“字节”
“编码/xml”
“fmt”
)
func Xml(字符串形式)字符串{
VARBytes.Buffer
EscapeText(&b,[]字节(in))
返回b.String()
}
func main(){
fmt.Println(`+Xml(`test'123`)+`)
}
这将产生输出:
test';123'

Go在
编码/XML
包中对XML有极好的支持,并且还有其他不需要手动构建XML的方法来生成输出

此版本在
元素中进行包装,还允许您将
接口{}
传递给
EncodeElement
方法,因此您不限于字符串:

主程序包
进口(
“编码/xml”
“操作系统”
)
func main(){
s:=`test'123'`
test:=xml.StartElement{Name:xml.Name{Local:`test`}
NewEncoder(os.Stdout).EncodeElement(s,test)
}
最后,可能是最好的,这个版本使用了
stuct
.Encode
方法:

主程序包
进口(
“编码/xml”
“操作系统”
)
类型测试结构{
XMLName xml.Name`xml:“测试”`
内容字符串'xml:,chardata'`
}
func main(){
s:=测试{内容:`Test'123`}
NewEncoder(os.Stdout).Encode(&s)
}
现在您可以扩展结构,但最重要的是,您还可以
Unmarshal
Decode
这种类型,从传入的XML中提取数据:

主程序包
进口(
“字节”
“编码/xml”
“fmt”
)
类型测试结构{
XMLName xml.Name`xml:“测试”`
内容字符串'xml:,chardata'`
}
func main(){
s:=测试{内容:`Test'123`}
var buf字节。缓冲区
xml.NewEncoder(&buf).Encode(&s)
fmt.Println(“Encoded=,buf.String())
变量读取测试
xml.NewDecoder(bytes.NewReader(buf.bytes()).Decode(&read)
fmt.Println(“Content=,read.Content)
}

有关xml包支持的标记的完整说明,请参阅
xml.Marshal
上的文档:

谢谢提供详细信息。让我简单地谈谈我的问题。我必须读取已经存在于mongo db中的XML文件,并且能够以字符串形式读取。因此,在不挂起该字符串的任何内容的情况下,我希望使用任何结构将该字符串打印为XML格式。在第一个示例中使用
函数Xml(string)string
,使特定的字符串Xml安全。如何从输出中获得特殊字符?测试';123'您需要这些特殊字符-这就是XML编码!否则,你就是在解码。请参见
xml.Unmarshal
xml.Decoder