从字符串或字节数组GO创建XML解码器

从字符串或字节数组GO创建XML解码器,xml,go,Xml,Go,我的应用程序中有一个xml解码函数,我使用xml.NewDecoder(resp.Body)来解码我的xml。NewDecoder函数接收io.Reader。但问题是,在服务器的响应中,我收到了需要忽略的前230个字节,其余的字节是我要解码的base64中编码的xml。以下是响应主体的示例: --RandomCaracteres... Content-Type: application/xml; charset=UTF-8; name=response_xml <

我的应用程序中有一个xml解码函数,我使用xml.NewDecoder(resp.Body)来解码我的xml。NewDecoder函数接收io.Reader。但问题是,在服务器的响应中,我收到了需要忽略的前230个字节,其余的字节是我要解码的base64中编码的xml。以下是响应主体的示例:

    --RandomCaracteres...
    Content-Type: application/xml; charset=UTF-8; name=response_xml

    <Response success="1"/>
    --RandomCaracteres...
    Content-Type: text/xml; name=report.xml
    Content-Transfer-Encoding: base64
    PE5leHBvc2VSZXBvcnQgdmVyc2lvbj0iMi4wIj4KPHNjYW5zPgo8c2NhbiBpZD0iNDYwMCIgbmFt......
但是我不能调用xml.NewDecoder()函数,因为数据不是io.Reader类型。有没有办法从字符串中提取解码对象?

:

或者,使用字节,您可以完全跳过
读取器
新解码器
,直接使用:

err := xml.Unmarshal(dataBytes, &myobj)
或者使用
字符串
,强制转换并使用
解组

err := xml.Unmarshal([]byte(dataStr), &myobj)

对于大型xml文件,解组速度不是很慢吗?我选择decode函数是因为它是fasterNope。
解码
解组
更快的唯一方法是使用
解码
来流式传输数据,而不是一次将所有数据加载到内存中。因为您已经在内存中存储了所有内容,所以没有任何优势。事实上,如果您需要,它所做的只是将输入包装在一个
字节的读取器中。
r := bytes.NewReader(dataBytes)
err := xml.Unmarshal(dataBytes, &myobj)
err := xml.Unmarshal([]byte(dataStr), &myobj)