XDocument将制表符转换为空格

3

我有一个 XML 文档,简化后看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<Node1 separator="    " />

有一个\t作为属性值。

执行此代码时

var path = @"C:\test.xml";
var doc = XDocument.Load(path);
doc.Save(path);

属性值从tab更改为space。

<?xml version="1.0" encoding="utf-8"?>
<Node1 separator=" " />

有没有一种方法可以保留原始值,因为它需要是一个制表符?

尝试使用expandtab选项。 - Rahul
你尝试过向 Node1 添加 xml:space="preserve" 吗? - Sina Iravanian
两个建议都没有按预期工作。 - dwonisch
1个回答

3
这是XML:属性值规范化中“属性中的XML空格规范化”部分,处理XML文档时这是默认行为。
对于空格字符(#x20,#xD,#xA,#x9),将空格字符(#x20)附加到规范化值中。
您应该能够像这里描述的那样使用XmlTextReader.Normalization属性。XmlDocument可以从阅读器XmlDocument.Load加载。
var path = @"C:\test.xml";
XmlDocument doc = new XmlDocument();
XmlTextReader reader = new XmlTextReader(path);
doc.Load(reader);
var s = doc.SelectSingleNode("*/@*").InnerText;
Console.WriteLine("|{0}|, {1}", (int)s[0], s.Length); // prints 9 - ASCII code of tab
doc.Save(path);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接