如何使用XmlWriter将原始字节数组输出到我的XML中?

时间:2012-11-03 05:00:47

标签: c# xml winforms xml-serialization

我正在尝试在一些XML节点中输出一些原始字节数据。
我不相信Base64输出适合我的解决方案。

我目前的工作如下:

要保存到文件:

(容器类Foo中的成员函数)

public void save(String file)
{
    XmlWriterSettings settings = new XmlWriterSettings();

    XmlSerializer serializer = new XmlSerializer(typeof(Foo));
    XmlWriter writer = XmlWriter.Create(file, settings);
    serializer.Serialize(writer, this);
}

序列化类(该类继承自IXmlSerializable):

Bytes中的数据是原始数据)

public void WriteXml(XmlWriter writer)
{
    char[] temp = new char[Bytes.Length];
    for (int i = 0; i < temp.Length; i++)
    {
        int n = (int)Bytes[i];
        temp[i] = (char)n;
    }
    writer.WriteRaw(temp, 0, temp.Length);
}

我确信在这个操作之后Bytes中的数据与temp中的数据完全匹配但在我序列化了类后,输出文件中的原始数据似乎不匹配,尽管有些部分看起来相似。我也试过在XmlWriter上使用编码设置,但这经常以例外结束。

1 个答案:

答案 0 :(得分:0)

“我不相信Base64输出适合我的解决方案。” o_O,嗯......那么这不是一个编程问题,而是一个哲学问题......

仍然,假设很多事情,例如数组Bytes包含根据您的Foo方法包含序列化实例save()的文件的字节数据,请保留请注意char表示Unicode字符,其大小为2字节...在将byte转换为char时,您要添加更多位...

哦编码,编码,编码......这就是为什么存在Base64 !!!