2010-03-19 18 views
2

J'utilise XMLTextWriter pour créer dynamiquement un document XML (dans VB.Net). Je veux des balises vides apparaissent comme ceci - <Tag></Tag> et pas - <Tag />Balises XmlTextWriter.WriteFullEndElement sur la même ligne

Alors, je me sers WriteFullEndElement pour mettre fin à l'étiquette d'élément. Mais il est en train d'écrire sur l'étiquette comme -

<Tag>

</Tag>

dire avec un saut de ligne entre les balises. Le service Web lisant ce XML le rejette en raison du caractère de retour à la ligne. Comment puis-je éviter le retour à la ligne, et avoir les balises de début et de fin sur la même ligne?

+0

Vous ne devriez pas utiliser directement 'XmlTextWriter' sauf si vous utilisez encore .NET 1.1. Au lieu d'utiliser 'new XmlTextWriter()', vous devriez utiliser 'XmlWriter.Create()'. –

+0

Merci pour la suggestion. Si j'utilise XmlWriter, comment définir les propriétés .Formatage et .Namespaces disponibles avec XmlTextWriter? – Apeksha

Répondre

3

Utilisez XmlWriterSettings. Spécifiquement, utilisez les NewLineHandling et NewLineChars.

Voici un exemple simple d'écrire un document XML en C#:

 XmlWriterSettings writerSettings = new XmlWriterSettings(); 
     writerSettings.Indent = true; 
     writerSettings.NewLineHandling = NewLineHandling.None; 


     using (XmlWriter textWriter = XmlTextWriter.Create(this.fileName, writerSettings)) 
     { 
      textWriter.WriteStartDocument(); 
      textWriter.WriteComment("generated file"); 
      textWriter.WriteStartElement("Root"); 
      // Populate data 
      foreach (object o in someList) 
      { 
       textWriter.WriteStartElement(o); 
       textWriter.WriteString(o); 
       textWriter.WriteFullEndElement(); 
      } 

      textWriter.WriteFullEndElement(); 
      textWriter.WriteEndDocument(); 
      textWriter.Close(); 
     } 

Vive