Question

Est-il possible de prendre une chaîne xml en .net et en faire Easyer à lire? ce que je veux dire est ce que je peux convertir ceci:

<element1><element2>some data</element2></element1>

à ceci:

<element1>
    <element2>
        some data
    </element2>
</element1>

est-il construit en classe pour cela? comme serveur SQL 2005 semble supprimer tout formatage sur xml pour économiser de l'espace ou quelque chose ...

Était-ce utile?

La solution

Si vous utilisez .NET 3.5, vous pouvez le charger comme XDocument puis il suffit d'appeler ToString () qui indentera de façon appropriée. Par exemple:

using System;
using System.Xml.Linq;

public class Test
{
    static void Main()
    {
        string xml = "<element1><element2>some data</element2></element1>";

        XDocument doc = XDocument.Parse(xml);
        xml = doc.ToString();
        Console.WriteLine(xml);
    }
}

Résultat:

<element1>
  <element2>some data</element2>
</element1>

Si vous écrivez à un fichier ou un autre cours d'eau, puis XDocument.Save sera (par défaut) indentera aussi.

(je crois XElement a toutes les mêmes caractéristiques, si vous avez vraiment pas besoin d'un XDocument.)

Autres conseils

Comment enregistrer / écrire le code XML dans un fichier?

Vous pouvez créer un XmlWriter et transmettre une instance XmlWriterSettings, où vous définissez la propriété Indent true:

XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;

XmlWriter writer = XmlWriter.Create (outputStream, settings);

Vous pouvez charger la chaîne dans un objet XDocument et enregistrez-le à nouveau une chaîne:

XDocument doc = XDocument.Load(new StringReader(xmlString));
StringWriter writer = new StringWriter();
doc.Save(writer);
string readable = writer.ToString();

Cela vous donnera le format xml cette façon:

<?xml version="1.0" encoding="utf-16"?>
<element1>
    <element2>some data</element2>
</element1>

Jetez un oeil à

XmlWriterSettings

http://msdn.microsoft.com/en -nous / bibliothèque / system.xml.xmlwritersettings.aspx

vous pouvez définir et IndentChars Indentation

Tout d'abord, vous avez marqué C # et VB.NET les deux. Donc, ma réponse sera pour les deux.

Vous pouvez définir la fonction qui récupère la chaîne XML en tant que paramètre dans le type de chaîne.

Disons que;

Vous avez créé une fonction:

[VB]

Private Function PrettyXML(XMLString As String) As String    
      Dim sw As New StringWriter()
      Dim xw As New XMLWriter(sw)
      xw.Formatiing = Formatting.Indented
      xw.Indentation = 4

      Dim doc As New XMLDocument
      doc.LoadXML(XMLString)
      doc.Save(xw)
      Return sw.ToString()    
End Function

Ensuite, vous pouvez simpyl appeler cette fonction:

Dim myXML As String = "<element1><element2>some data</element2></element1>"
Dim myPrettyXML As String
myPrettyXML = PrettyXML(myPrettyXML)

[C #]

Private String PrettyXML(string XMLString)
   {
      StringWriter sw = new StringWriter();
      XMLTextWriter xw = new XmlTextWriter(sw);
      xw.Formatiing = Formatting.Indented;
      xw.Indentation = 4;
      XmlDocument doc = new XmlDocument();
      doc.Save(xm);
      return sw.ToString();
   }

Ensuite, vous pouvez simplement appeler cette fonction:

string myXML =   "<element1><element2>some data</element2></element1>";
string myPrettyXML = "";
myPrettyXML = PrettyXML(myPrettyXML);

NOTE:. Je ne l'ai pas essayé la version C #, mais il devrait fonctionner

Hope this helps ..

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top