XmlDocument读取XML文件,作为SOAP消息体传递

时间:2012-07-13 18:32:29

标签: c# web-services soap xmldocument

我正在使用XmlDocument读取XML文档的内容,然后将这些内容传递到Web服务请求的SOAP消息体中。但是,在实际上在调用中传递的数据(从XML文档中读取)中,<和>符号被替换为

> and < 

导致接收端出现问题。

我错过了什么?

以下是我的代码片段:

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);

感谢您的帮助。

1 个答案:

答案 0 :(得分: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 };

{{1}}

请参阅http://en.wikipedia.org/wiki/CDATA