3

我正在填充信息并使用该方法XElement将其写入 xml 文件。XElement.Save(path)在某些时候,结果文件中的某些字符会被转义 - 例如,>变成>.

这种行为是不可接受的,因为我需要在 XML 中存储包含该>字符作为密码一部分的信息。如何将我的 XElement 对象的“原始”内容写入 XML 而无需转义这些内容?

4

2 回答 2

3

缺乏这种行为是不可接受的。

独立的未转义>无效的 XML
XElement 旨在生成有效的 XML。

如果要获取元素的未转义内容,请使用该Value属性。

于 2010-04-02T00:10:50.910 回答
2

XML 规范通常允许>显示为未转义。XDocument尽管它出现在不严格要求转义的地方,但它会安全并逃脱它。

您可以对生成的 XML 进行替换。请注意http://www.w3.org/TR/REC-xml#syntax,如果这导致任何]]>序列,则 XML 将不符合 XML 规范。此外,XDocument.Parse实际上会拒绝此类 XML,并出现错误“']]>' is not allowed in character data.”。

XDocument doc = XDocument.Parse("<test>Test&gt;Data</test>");
// Don't use this if it could result in any ]]> sequences!
string s = doc.ToString().Replace("&gt;", ">");
System.IO.File.WriteAllText(@"c:\path\test.xml", s);

考虑到任何符合规范的 XML 解析器都必须支持&gt;,我强烈建议修复处理程序 XML 输出的代码。

于 2010-04-02T00:32:24.673 回答