将XML字符串作为值添加到XML SOAP请求正文中时的XmlException

问题描述 投票:0回答:1

我正在编写一个使用XML SOAP的应用程序。遗憾的是,编写请求的代码不在我手中,因为它是一个仅提供给我的DLL文件。我下载了Jetbrain的dotPeek以反编译DLL文件并查看代码,在那里我发现肥皂消息请求正在被写入

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#中写这些。谢谢您的帮助。

c# xml soap opc
1个回答
0
投票

几个小时后终于找到了答案。最快的解决方案是将开始和结束标记转换为character entities

string myValue = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Foobar ID=\"123\" />";
myValue = myValue.Replace("<", "&lt;").Replace(">", "&gt;");

您也可以选择使用

  • HttpUtility.HtmlEncode
  • System.Net.WebUtility.HtmlEncode
© www.soinside.com 2019 - 2024. All rights reserved.