【问题标题】:Save string to XML File将字符串保存到 XML 文件
【发布时间】:2012-08-09 04:24:07
【问题描述】:

我想将以下字符串保存在 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 中的开始和结束标记之外,&amp;lt; 被 &amp;lt; 替换,&amp;gt; 被 &amp;gt; 替换。

【问题讨论】:

  • 请发布您用于写入文件的代码。
  • 请显示导致上述输出的代码。

标签: c# .net


【解决方案1】:

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

我的建议是,您可以尝试使用XmlDocument.LoadXml(string s) 将文本加载到新的“XmlDocument”中,然后将其导入当前文档,或者将其保留编码。

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      XML 写入正确。

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

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

      使用这个:HttpServerUtility.HtmlDecode(encodedString)

      参考: Decode XML returned by a webservice (< and > are replaced with &lt; and &gt)?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-03-29
        • 1970-01-01
        • 2012-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多