2013-05-27 37 views
2

我有一個簡單的外觀像這樣的XML文檔:的XDocument改變標籤空間

<?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=" " /> 

有沒有辦法保存原始值,因爲它需要是一個選項卡?

+0

嘗試使用'expandtab'選項。 – Rahul

+0

你有沒有試過把'xml:space =「preserve」'添加到'Node1'? –

+0

這兩個建議沒有按預期工作。 – dwonisch

回答

3

這是處理XML文檔時默認行爲的XML:Attribute-Value Normalization中的「屬性中的XML空白標準化」部分。

對於一個空白字符(#X20,#xD,#xA,#X9),空格字符(#X20)追加到標準值

您應該能夠使用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);