2

我有一个简化的 xml 文档,如下所示:

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

有一个\tas 属性值。

执行此代码时

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

属性值从制表符更改为空格。

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

有没有办法保留原始值,因为它需要是一个选项卡?

4

1 回答 1

3

这是XML:Attribute-Value Normalization的“属性中的 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);
于 2013-05-27T06:40:10.650 回答