我正在编写一个利用XML SOAP的应用程序。不幸的是,写入请求的代码是我无法控制的,因为它是仅提供给我的DLL文件。我下载了Jetbrain的dotPeek来反编译DLL文件并查看代码,结果发现soap消息请求主体是这样编写的
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#编写所有这些内容。感谢您的帮助。
答案 0 :(得分:0)
几个小时后终于找到了答案。最快的解决方案是将开始和结束标记转换为character entities
string myValue = "<?xml version=\"1.0\" encoding=\"utf-8\"?><Foobar ID=\"123\" />";
myValue = myValue.Replace("<", "<").Replace(">", ">");
您也可以选择使用