2009-06-08 78 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()進行調查。如果您無法控制接收格式,則需要查看它需要的編碼。