2012-07-13 88 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