在 XML SOAP 请求正文中添加 XML 字符串作为值时出现 XmlException

我正在编写一个使用 XML SOAP 的应用程序。不幸的是,编写请求的代码不在我的手中,因为它是一个只提供给我的 DLL 文件。我下载了Jetbrain的dotPeek来反编译DLL文件并查看代码,我发现soap message request body是这样写的

string message = "<Value>" + myValue + "</Value>";

之后解析为 XElement。

现在这在大多数情况下都有效,因为大多数请求都接受正常值(例如。<Value>true</Value>)。但是我们正在研究的 xml 技术中有一个特定的协议,我们必须像这样将整个 xml 字符串作为值传递

string myValue = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Foobar ID=\"123\" />";

这会引发错误:

意外的 XML 声明。XML 声明必须是文档中的第一个节点,并且之前不允许出现空白字符。

因为我生成的 xml 主体看起来像:

<Value><?xml version="1.0" encoding="utf-8"?><Foobar ID="123" /></Value>

我是否有可能在避免错误的同时以某种方式传递此 xml 字符串?我正在用 C# 编写所有这些。谢谢您的帮助。


小唯快跑啊
浏览 148回答 1
1回答

狐的传说

几个小时后终于找到了答案。最快的解决方案是将开始和结束标记转换为字符实体string&nbsp;myValue&nbsp;=&nbsp;"<?xml&nbsp;version=\"1.0\"&nbsp;encoding=\"utf-8\"?><Foobar&nbsp;ID=\"123\"&nbsp;/>"; myValue&nbsp;=&nbsp;myValue.Replace("<",&nbsp;"&lt;").Replace(">",&nbsp;"&gt;");您也可以选择使用HttpUtility.HtmlEncode系统.Net.WebUtility.HtmlEncode
打开App,查看更多内容
随时随地看视频慕课网APP