.net 使用XDocument时如何在属性值中保留空白?

.net 使用XDocument时如何在属性值中保留空白?,.net,attributes,whitespace,linq-to-xml,.net,Attributes,Whitespace,Linq To Xml,我处理在属性值中包含制表符(“\t”)和换行符(\n”)的xml。当我使用XDocument.parse()解析它时,制表符和换行符被转换为空格,即使使用LoadOptions.PreserveWhitespace参数也是如此 如何获得具有原始属性值的XDocument?我没有找到真正的解决方案,因此我最终得到了一个quick&dirty: xml = xml.Replace("\t", "	").Replace("\r", "
"); 总比没有好…您可以使用一

我处理在属性值中包含制表符(“\t”)和换行符(\n”)的xml。当我使用XDocument.parse()解析它时,制表符和换行符被转换为空格,即使使用LoadOptions.PreserveWhitespace参数也是如此


如何获得具有原始属性值的XDocument?

我没有找到真正的解决方案,因此我最终得到了一个quick&dirty:

xml = xml.Replace("\t", "	").Replace("\r", "
");

总比没有好…

您可以使用一个简单的XmlTextReader来解析xml字符串。它将保留属性值中的所有空白:

string textToParse = "<e a=\"x\ty\rz\n\" />" ;
using (var sr = new StringReader(textToParse)) {
    using (var xr = new XmlTextReader(sr)) {
        var xd = XDocument.Load(xr);
        System.Console.WriteLine(xd.ToString());
    }
}
string textToParse=“”;
使用(var sr=新的StringReader(textToParse)){
使用(var xr=新的XmlTextReader(sr)){
var xd=XDocument.Load(xr);
System.Console.WriteLine(xd.ToString());
}
}
将输出

<e a="x&#x9;y&#xD;z&#xA;" />