2012-07-13 57 views
1

我正在使用XmlDocument讀取XML文檔的內容,然後將這些內容一起傳遞到Web服務請求的SOAP消息正文中。然而,在實際被相處在呼叫傳遞的數據的<(這是從XML文檔讀取)和>符號正在與XmlDocument讀取作爲SOAP消息正文傳遞的XML文件

&gt; and &lt; 

這是造成在接收端的問題代替。

我錯過了什麼?

這裏是我的代碼片段:

string filePath = FileList.SelectedItem.Value; 
string doc = File.ReadAllText(filePath); 

XmlDocument xDoc = new XmlDocument { PreserveWhitespace = true }; 
xDoc.LoadXml(doc); 


MyService.TransactionRequest request = new MyService.TransactionRequest { message = xDoc.OuterXml }; 


MyService.TransactionClient client = new MyService.TransactionClient(); 


client.ProcessTransaction(request); 

感謝任何及所有的幫助。

回答

0

您可能希望將消息的內容封裝在CDATA結構中,該結構應該能夠阻止SOAP消息編碼器轉換字符串中的XML標記。

string wrapped = "<![CDATA[" + xDoc.OuterXml + "]]>"; 
TransactionRequest request = new MyService.TransactionRequest { message = wrapped }; 

如果你可以XDOC包含CDATA節本身,那麼你需要做更多的工作,因爲CDATA節不能嵌套。雖然有一個簡單的解決方法。只需將要包裝的字符串中的所有出現"]]>"替換爲"]]]]><![CDATA[>"即可。

string toWrap = xDoc.OuterXml.Replace("]]>", "]]]]><![CDATA[>"); 
string wrapped = "<![CDATA[" + toWrap + "]]>"; 
TransactionRequest request = new MyService.TransactionRequest { message = wrapped }; 

請參閱http://en.wikipedia.org/wiki/CDATA