我有一个简化后的 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=" " />
有没有办法保留原始值,因为它必须是制表符?
最佳答案
这是 XML:Attribute-Value Normalization 的“属性中的 XML 空白规范化”部分这是处理 XML 文档时的默认行为。
For a white space character (#x20, #xD, #xA, #x9), append a space character (#x20) to the normalized value
您应该能够使用 XmlTextReader.Normalization属性描述 here . 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);
关于c# - XDocument 将制表符更改为空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16767481/