为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
小唯快跑啊 2022-11-22 16:24:03

我正在编写一个使用 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# 编写所有这些。谢谢您的帮助。


查看完整描述

1 回答

?
狐的传说

TA贡献1511条经验 获得超1个赞

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

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

您也可以选择使用

  • HttpUtility.HtmlEncode

  • 系统.Net.WebUtility.HtmlEncode


查看完整回答
反对 回复 6天前
  • 1 回答
  • 0 关注
  • 8 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信