C#:xml CData中的字节数组

时间:2009-06-08 12:26:47

标签: c# xml bytearray cdata abcpdf

我有一个返回xml块的WCF服务。一个元素是CData []部分。我的应用程序从数据库中读取HTML文件,并使用ABCPDF将其转换为PDF byte []数组。然后在我的XmlWriter中将字节添加到CData部分。

问题是生成的xml如下所示:

<![CDATA[System.Byte[]]]>

如何将字符串字符串输入CData部分?我尝试过这样的事情:

string str;
ASCIIEncoding enc = new ASCIIEncoding();
str = enc.GetString(theData);

Convert.ToBase64String(theData);

我卡住!!任何帮助都会很棒,谢谢!

2 个答案:

答案 0 :(得分:7)

如果您已经控制了两端,那么使用Convert.ToBase64String(data) 肯定是的方式。您不希望发送“原始”字节并假装它们是有效的文本数据。在另一边使用Convert.FromBase64String(text)

我有点惊讶的是,WCF并没有自动处理这个问题。我不能说我自己已经使用过它(Marc Gravell可能会参与其中 - 我相信他有很多经验)但是我希望它只是暴露字节数组。您为什么参与XML级别?

答案 1 :(得分:0)

很难准确说出问题的确切位置 - 更完整的代码示例可能有所帮助。但是从你所显示的序列化来看 - 看起来非常像ToString()上的byte[]

如果您尝试通过线路发送二进制数据,则应该考虑使用Convert.ToBase64String()。如果您无法控制接收格式,则需要查看它所需的编码。