我使用XlmSerializer来序列化一个dotnet对象。
dotnet对象的一个属性是具有此值的字符串:
"<![CDATA[<p>No Comments</p>]]>"
序列化为StringWriter后,所有<
和>
字符都会转换为<
和>
,包括CDATA。
我怎么能阻止这种情况发生?
答案 0 :(得分:1)
不要放入CDATA - 这是串行器的工作。您刚刚告诉序列化程序从CDATA字符串中生成有效的XML。它正是如此 - 在反序列化之后,你仍然留有<![CDATA[<p>No Comments</p>]]>
。这正是你要求的!更重要的是,它正是您希望序列化程序处理数据的原因 - 否则您将面临一个受伤的世界,因为您需要确保数据实际上是安全的。实质上,您正在执行双重编码。
相反,只需将<p>No Comments</p>
放在那里 - 序列化程序将为您处理转义,以确保它是实际反序列化为<p>No Comments</p>
的有效XML。