2009-06-08 86 views
1

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

问题是生成的XML看起来是这样的:

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

我怎样才能得到字节串入CDATA节?我已经试过了诸如:

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

Convert.ToBase64String(theData); 

林卡住!任何帮助将是伟大的,谢谢!

+0

当你使用Convert.ToBase64String时,你在输出中得到了什么?这可能是最好的方式(使用ASCIIEncoding.GetString只在字节表示有效的ASCII字符串时才起作用)。 – 2009-06-08 12:30:03

回答

6

使用Convert.ToBase64String(data)绝对是如果你有控制两端的方法,您不希望发送“原始”字节并假装它们是有效的文本数据。在另一侧使用Convert.FromBase64String(text)

我有点惊讶,WCF没有为你自动处理这个。我不能说我自己曾经使用过它(Marc Gravell可能会弹出 - 他有很多经验,我相信),但我希望它只是公开字节数组。你为什么参与XML的层面?

+0

在XML文档中不允许使用许多控制字符,包括nul(0)。 – Richard 2009-06-08 12:30:54

0

很难确切地说出问题发生的位置 - 更完整的代码示例可能会有所帮助。但是从你展示的序列化 - 看起来很像ToString()正在调用你的byte[]

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