我正在使用XElement
方法填充XElement.Save(path)
信息并将其写入xml文件。在某些时候,生成的文件中的某些字符会被转义 - 例如,>
变为>
。
这种行为是不可接受的,因为我需要将信息存储在包含>
字符作为密码一部分的XML中。如何在没有这些转义的情况下将我的XElement对象的“原始”内容写入XML?
答案 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>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,错误为“']]&gt;'字符数据中不允许使用。“。
>
考虑到任何符合规范的XML解析器必须支持{{1}},我强烈建议修复处理程序XML输出的代码。