XML编码:XML注入到输出
问题描述:
我有一个字符串与XML片段,我想给它注入到编码流:XML编码: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><mytag>foo</mytag></root>
但我想有<root><mytag>foo</mytag></root>
有没有什么办法可以使用enc.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()
这是essentialy如果您使用innerxml
结构的标签会发生什么,但只能通过一个结构来完成,并且会给你多一个组代表围绕你的原始XML的结构标签。
+0
它看起来不像»One True Way(TM)«,但它工作正常,它解决了我的问题。谢谢! – topskip
直接写入Writer有什么问题,即绕过编码器:'os.Stdout.Write([] byte(myxml))'? – Volker
这就是我所要做的 - 只有确保在直接写入底层写入器之前先清空编码器。 – hobbs
我没有想到明显的解决方案。谢谢! – topskip