如何阻止XElement.Save转义字符?

时间:2010-04-02 00:08:23

标签: c# xml escaping xelement

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

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

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:1)

XML规范通常允许>显示未转义。虽然XDocument出现在不严格要求逃避的地方,但]]>可以安全地逃脱它。

您可以对生成的XML执行替换。请注意每http://www.w3.org/TR/REC-xml#syntax,如果这导致任何XDocument.Parse序列,则XML将不符合XML规范。此外,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;'字符数据中不允许使用。“。

&gt;

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