在Golang的XML字符串中添加外部标签

I wonder if it's possible to add outer tags to a given XML string. For example, to wrap up my XML string with

INPUT:

<My><XML><String>Something Here...</String></XML></My>

OUTPUT:

<OuterTag><My><XML><String>Something Here...</String></XML></My></OuterTag>

I've tried xml.Encoder.EncodeToken(), xml.Encoder.Encode() but it doesn't work out.

I'm asking this because I'd like to wrap up my XML to a SOAP envelope, as Golang doesn't built-in SOAP support.

Any idea is appreciated!

I figured out a way, may not be the best but it works. Simply utilize xml.Encoder.EncodeToken()

The original xml is CharData that implements xml.Token interface. 'OuterTag' is StartElement which also implements xml.Token interface.

encoder := xml.NewEncoder(buf)
outerTag := xml.StartElement {Name: xml.Name{Space:"", Local:"OuterTag"}}
encoder.EncodeToken(outerTag)
defer encoder.EncodeToken(outerTag.End())
encoder.EncodeToken(originalXmlBytes)