2010-11-16 16 views
1

Je suis en train de faire 2 choses:Formatage XML avec tabulation et suppression de l'espace de fin de l'élément?

  1. Obtenez le XML de sortie avec TABULATION formated au lieu des espaces.

  2. Supprime l'espace de fin qu'il génère pour l'élément vidéo.

    " /> 
    

    à

    "/> 
    

J'ai essayé d'utiliser

xmlWriter.Formatting = Formatting.Indented; 

ainsi que

IndentChar 

mais ils avaient n ot travaillé pour moi ne sais pas pourquoi.

C'est le code que j'ai actuellement, je voudrais aussi entendre des conseils et des suggestions pour l'améliorer:

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' a été dépréciée depuis .NET 2.0. Utilisez 'XmlWriter.Create' à la place. Pourquoi vous souciez-vous de "formatage" de toute façon? –

+0

cela ne fonctionne pas avec XmlWriter.Créer soit – Guapo

+0

Pourquoi diable vous souciez-vous de cet espace de fuite? Quel processeur XML non conforme alimentez-vous cette sortie? –

Répondre

1

J'ai réussi à résoudre la question 1 avec le code ci-dessous, mais je ne sais pas encore s'il est possible de supprimer l'espace entre " et /> à la fin d'une question vide élément 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();