我有一个Web服务,它返回一个xml字符串作为结果.返回字符串采用以下格式:
<ReturnValue>
<ErrorNumber>0
</ErrorNumber>
<Message>my message</Message>
</ReturnValue>
Run Code Online (Sandbox Code Playgroud)
我想要插入"message"标记的数据是自定义对象的序列化版本.该对象的序列化格式包含序列化后的xml和名称空间声明.当它被扔进我的返回xml字符串的"message"标签时,XmlSpy说它没有格式良好.我应该如何摆脱名称空间声明,还是有一种不同的方法将序列化对象嵌入到xml字符串中?
只要确保你的<Message>XML编码,这样<,>,",并&显示为<,>,"和&分别.
编码字符的内置方法很少:
string message = System.Web.HttpUtility.HtmlEncode(serializedXml);
string message = System.Security.SecurityElement.Escape(serializedXml);
Run Code Online (Sandbox Code Playgroud)
XmlTextWriter为你做的工作CDATA来包装你的XML此外,这可能与以下内容重复:
将字符串包装在CDATA中,如下所示:
<![CDATA[your xml, which can be multi-line]]>
Run Code Online (Sandbox Code Playgroud)
CDATA将通知验证者将CDATA内容视为忽略文本.这通常是将XML(或标记非XML内容)嵌入字符串的最有效方法.如果嵌入式XML包含自己的CDATA,则可能会遇到问题,但这是一个简单的修复.