XDocument将制表符更改为空格

本文关键字:空格 制表符 XDocument | 更新日期: 2023-09-27 18:15:42

我有一个简化后的xml文档:

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

存在一个't作为属性值。

执行这段代码时

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

属性值由制表符改为空格。

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

是否有一种方法来保留原始值,因为它被要求是一个选项卡?

XDocument将制表符更改为空格

这是XML:属性值规范化的"属性中的XML空白规范化"部分,这是处理XML文档时的默认行为。

对于空白字符(#x20, #xD, #xA, #x9),在规范化值

后面附加一个空格字符(#x20)

您应该能够使用XmlTextReader。归一化属性,如下所述。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);