2010-04-27 180 views
1

我有XML,其中我在它有XML再次,如:C#XML序列化

<?xml version=\"1.0\" encoding=\"UTF-8\"?> 
<Tag> 
<Value1> </Value1> 
<Value2><?xml version=\"1.0\" encoding=\"UTF-8\"?>... </Value2> 
</Tag> 

此字符串在C#中反序列化不工作。我在java中構造這個字符串並將其發送給c#應用程序。我怎樣才能解決這個問題?

回答

1

一個辦法是包裹<?xml version=\"1.0\" encoding=\"UTF-8\"?>...作爲CDATA節:

<?xml version=\"1.0\" encoding=\"UTF-8\"?> 
<Tag> 
<Value1> </Value1> 
<Value2><![CDATA[<?xml version=\"1.0\" encoding=\"UTF-8\"?>... </Value2>]]> 
</Tag> 
+0

感謝作品很好 – Moony 2010-04-27 19:38:05

2

您顯示的XML格式不正確。字符串在放入XML輸出流之前需要進行編碼。你的XML應該是這樣的:

<?xml version=\"1.0\" encoding=\"UTF-8\"?> 
<Tag> 
    <Value1></Value1> 
    <Value2>&lt;?xml version=&quot;1.0&quot; ... </Value2> 
</Tag> 
0

你不想聽到的可怕的答案是,XML超過只是一個字符串。出於編碼和其他原因,您不能可靠地將字符串片段替換爲其他片段,並期望格式良好的文檔。如果你沒有使用正確的XML庫(順便說一句,你應該在所有主要框架中),你仍然可以通過確保它們的編碼實際上相同來破解XML片段字符串,並通過刪除<?xml version="1.0" encoding="UTF-8"?>從任何片段的開始。

+0

假設你實際上想遞歸地將一個文檔存儲在另一個文檔中,CDATA節將爲外部文檔工作,但不能在內部文檔中遞歸地存儲CDATA節。 – Jono 2010-04-27 19:37:20