我正在填充信息并使用该方法XElement
将其写入 xml 文件。XElement.Save(path)
在某些时候,结果文件中的某些字符会被转义 - 例如,>
变成>
.
这种行为是不可接受的,因为我需要在 XML 中存储包含该>
字符作为密码一部分的信息。如何将我的 XElement 对象的“原始”内容写入 XML 而无需转义这些内容?
缺乏这种行为是不可接受的。
独立的未转义>
是无效的 XML。
XElement 旨在生成有效的 XML。
如果要获取元素的未转义内容,请使用该Value
属性。
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>Data</test>");
// Don't use this if it could result in any ]]> sequences!
string s = doc.ToString().Replace(">", ">");
System.IO.File.WriteAllText(@"c:\path\test.xml", s);
考虑到任何符合规范的 XML 解析器都必须支持>
,我强烈建议修复处理程序 XML 输出的代码。