在xml字符串中嵌入xml文档

gan*_*ers 6 c# xml

我有一个Web服务,它返回一个xml字符串作为结果.返回字符串采用以下格式:

<ReturnValue>
   <ErrorNumber>0
</ErrorNumber>
<Message>my message</Message>
</ReturnValue>
Run Code Online (Sandbox Code Playgroud)

我想要插入"message"标记的数据是自定义对象的序列化版本.该对象的序列化格式包含序列化后的xml和名称空间声明.当它被扔进我的返回xml字符串的"message"标签时,XmlSpy说它没有格式良好.我应该如何摆脱名称空间声明,还是有一种不同的方法将序列化对象嵌入到xml字符串中?

Cᴏʀ*_*ᴏʀʏ 6

只要确保你的<Message>XML编码,这样<,>,",并&显示为&lt;,&gt;,&quot;&amp;分别.

编码字符的内置方法很少:

string message = System.Web.HttpUtility.HtmlEncode(serializedXml);

string message = System.Security.SecurityElement.Escape(serializedXml);
Run Code Online (Sandbox Code Playgroud)
  • 用一个XmlTextWriter为你做的工作
  • 使用CDATA来包装你的XML

此外,这可能与以下内容重复:

  1. 编码XML文本数据的最佳方法


pha*_*ers 6

将字符串包装在CDATA中,如下所示:

<![CDATA[your xml, which can be multi-line]]>
Run Code Online (Sandbox Code Playgroud)

CDATA将通知验证者将CDATA内容视为忽略文本.这通常是将XML(或标记非XML内容)嵌入字符串的最有效方法.如果嵌入式XML包含自己的CDATA,则可能会遇到问题,但这是一个简单的修复.