我想在XML文件中保存以下字符串:
<text><![CDATA[<p>what is my pet name</p>]]></text>
当我保存它时,它看起来像:
<text><![CDATA[<p>what is my pet name</p>]]></text>
我尝试了File.WriteAllText()
,XmlDocument.Save()
方法,但没有得到正确答案。
除了在XML中打开和关闭代码之外的其他任何地方,<
都被<
取代而>
被>
取代。
答案 0 :(得分:2)
正在发生的事情是XML解析器正在编码您的字符串。当您稍后尝试访问该字符串时,可以在此时再次对其进行解码。
我的建议是,您是尝试将文本加载到带有XmlDocument.LoadXml(string s)
的新“XmlDocument”中,然后将其导入到当前文档中,或者将其保留为编码状态。
您不应该尝试同时使用XML解析器和手动添加文本。
答案 1 :(得分:1)
我猜您手动添加CDATA并且XML写入机制正确地逃脱了您的CDATA,因为它将其视为文本内容。而是明确添加仅包含内容的CDATA部分。
如果您使用的是旧的XML API(System.XML),请使用此方法创建CDATA部分:http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.createcdatasection 然后将节点附加到元素,就像链接中的示例一样。
答案 2 :(得分:0)
正确编写XML。
XML具有为命令保留的特殊字符,就像C#保留像“if”和“string”这样的单词。
XML正在编码您的字符串以进行存储。您需要做的是检索字符串,通过类似的解码过程运行它。
使用此:HttpServerUtility.HtmlDecode(encodedString)
参考: Decode XML returned by a webservice (< and > are replaced with < and >)?