将字符串保存到XML文件

时间:2012-08-08 20:07:46

标签: c# .net

我想在XML文件中保存以下字符串:

<text><![CDATA[<p>what is my pet name</p>]]></text>

当我保存它时,它看起来像:

<text>&lt;![CDATA[&lt;p&gt;what is my pet name&lt;/p&gt;]]&gt;</text>

我尝试了File.WriteAllText()XmlDocument.Save()方法,但没有得到正确答案。

除了在XML中打开和关闭代码之外的其他任何地方,<都被&lt;取代而>&gt;取代。

3 个答案:

答案 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 &lt; and &gt)?