我正在使用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);
感谢您的帮助。
答案 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}}