XML编码:将XML注入输出

XML编码:将XML注入输出,xml,go,Xml,Go,我有一个带有XML片段的字符串,我想将其注入到编码流中: package main import ( "encoding/xml" "os" ) func main() { myxml := `<mytag>foo</mytag>` enc := xml.NewEncoder(os.Stdout) root := xml.StartElement{Name: xml.Name{Local: "root"}} enc.En

我有一个带有XML片段的字符串,我想将其注入到编码流中:

package main

import (
    "encoding/xml"
    "os"
)

func main() {
    myxml := `<mytag>foo</mytag>`
    enc := xml.NewEncoder(os.Stdout)
    root := xml.StartElement{Name: xml.Name{Local: "root"}}
    enc.EncodeToken(root)
    enc.EncodeToken(xml.CharData(myxml))
    enc.EncodeToken(root.End())
    enc.Flush()
}
主程序包
进口(
“编码/xml”
“操作系统”
)
func main(){
myxml:=`foo`
enc:=xml.NewEncoder(os.Stdout)
root:=xml.StartElement{Name:xml.Name{Local:“root”}
enc.EncodeToken(根)
enc.EncodeToken(xml.CharData(myxml))
enc.EncodeToken(root.End())
附件冲水
}
我得到了
mytagfoo/mytag
但是我想要
foo


使用
EncodeToken()
或类似的工具有什么方法可以做到这一点吗?

插入原始XML的唯一方法是直接将其写入流,在本例中为os.Stdout

myxml := `<mytag>foo</mytag>`
enc := xml.NewEncoder(os.Stdout)
root := xml.StartElement{Name: xml.Name{Local: "root"}}
enc.EncodeToken(root)
enc.Flush()
os.Stdout.WriteString(myxml)
enc.EncodeToken(root.End())
enc.Flush()
myxml:=`foo`
enc:=xml.NewEncoder(os.Stdout)
root:=xml.StartElement{Name:xml.Name{Local:“root”}
enc.EncodeToken(根)
附件冲水
os.Stdout.WriteString(myxml)
enc.EncodeToken(root.End())
附件冲水

如果您使用
innerxml
struct标记,基本上会发生这种情况,但这只能通过一个struct来完成,并且会给您一组表示原始xml周围结构的标记。

直接向编写器写入(即绕过编码器)有什么错:
os.Stdout.Write([]字节(myxml))
?我也会这么做-在直接写入底层编写器之前,只需确保
刷新编码器。我没有想到明显的解决方案。谢谢它看起来不像»单向(TM)«,但它工作良好,解决了我的问题。谢谢