2010-11-16 55 views
1

我試圖做兩件事情:使用製表格格式化XML並刪除元素結尾空間?

  1. 獲取與 TABULATION而不是空格格式化輸出XML。

  2. 刪除它爲視頻元素生成的結尾空間 。

    " /> 
    

    "/> 
    

我曾嘗試使用

xmlWriter.Formatting = Formatting.Indented; 

以及

IndentChar 

但他們沒有ñ ot爲我工作不知道爲什麼。

這是我目前的代碼,我也想聽聽意見和建議,以改進:

XmlDocument xmlDoc = new XmlDocument(); 

XmlTextWriter xmlWriter = new XmlTextWriter(filename, System.Text.Encoding.UTF8); 
xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8' standalone='yes'"); 
xmlWriter.WriteComment(@" This file was made by @author"); 
xmlWriter.WriteStartElement("videos"); 
xmlWriter.Close(); 

xmlDoc.Load(filename); 
XmlNode root = xmlDoc.DocumentElement; 
foreach (int myID in ExportListIDs) 
{ 
    XmlElement video = xmlDoc.CreateElement("video"); 
    root.AppendChild(video); 
    video.SetAttribute("videoID", myID.ToString()); 
} 

xmlDoc.Save(filename); 
+0

的端部,以除去"/>之間的空間'XmlWriter'一直以來.NET 2.0棄用。改爲使用'XmlWriter.Create'。爲什麼你關心「格式化」呢? – 2010-11-16 03:43:07

+0

它不能與XmlWriter一起使用。創建 – Guapo 2010-11-16 03:51:46

+0

爲什麼地球上你關心的是尾隨空間?你輸出的是什麼不符合要求的XML處理器? – 2010-11-16 10:23:00

回答

1

我已經設法解決問題1下面的代碼,但我仍然不知道如果有可能在一個元件參見問題2.

 XmlWriterSettings settings = new XmlWriterSettings(); 
     settings.Encoding = Encoding.UTF8; 
     settings.Indent = true; 
     settings.IndentChars = "\t"; 

     XmlWriter writeXML = XmlWriter.Create("test.xml", settings); 
     writeXML.WriteStartDocument(); 
     writeXML.WriteComment(@" This file was made by @author"); 

     writeXML.WriteStartElement("videos"); 

     foreach (var item in myList) 
     { 
      writeXML.WriteStartElement("video"); 
      writeXML.WriteAttributeString("ID", item.Key.ToString()); 
      writeXML.WriteAttributeString("Name", item.Value); 
       writeXML.WriteStartElement("object"); 
       writeXML.WriteAttributeString("A", item.Key.ToString()); 
       writeXML.WriteAttributeString("B", item.Value); 
       writeXML.WriteEndElement(); 
      writeXML.WriteEndElement(); 
     } 

     writeXML.WriteEndElement(); 
     writeXML.WriteEndDocument(); 
     writeXML.Close();