我正在编写一个使用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#中写这些。谢谢您的帮助。
几个小时后终于找到了答案。最快的解决方案是将开始和结束标记转换为character entities
string myValue = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Foobar ID=\"123\" />";
myValue = myValue.Replace("<", "<").Replace(">", ">");
您也可以选择使用