1

我想将以下字符串保存在 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;

4

3 回答 3

2

发生的事情是 XML 解析器正在对您的字符串进行编码。当您稍后尝试访问该字符串时,可以在那时再次对其进行解码。

我的建议是,您要么尝试使用 将文本加载到新的“XmlDocument”中XmlDocument.LoadXml(string s),然后将其导入到当前文档中,要么对其进行编码。

您不应尝试同时使用 XML 解析器和手动添加文本。

于 2012-08-08T20:14:34.803 回答
1

我猜您手动添加了 CDATA,并且 XML 写入机制正确地转义了您的 CDATA,因为它将其视为文本内容。而是显式添加仅包含内容的 CDATA 部分。

如果您使用的是旧的 XML API (System.XML),请使用此方法创建 CDATA 部分:http: //msdn.microsoft.com/en-us/library/system.xml.xmldocument.createcdatasection 然后附加节点到元素,就像链接中的示例一样。

于 2012-08-08T20:12:09.160 回答
0

XML 正在正确写入。

XML 具有为命令保留的特殊字符,就像 C# 保留诸如“if”和“string”之类的单词一样。

XML 正在对您的字符串进行编码以进行存储。您需要做的是当您检索字符串时,通过类似的解码过程运行它。

用这个:HttpServerUtility.HtmlDecode(encodedString)

参考: 解码 Web 服务返回的 XML(< 和 > 替换为 < 和 >)?

于 2012-08-08T20:24:07.063 回答