XML编码:将XML注入输出

时间:2015-11-05 17:33:12

标签: 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.EncodeToken(root)
    enc.EncodeToken(xml.CharData(myxml))
    enc.EncodeToken(root.End())
    enc.Flush()
}

我得到<root>&lt;mytag&gt;foo&lt;/mytag&gt;</root>,但我想要<root><mytag>foo</mytag></root>

有什么方法可以使用enc.EncodeToken()或类似的东西来做到这一点吗?

1 个答案:

答案 0 :(得分:1)

插入原始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()

如果你使用innerxml struct标签,但是这只能通过一个结构来完成,并且会给你一组代表你原始xml周围结构的标签,这一点很重要。