Make xml more readable

Is there a way to take the xml string in .net and make it easier to read? I mean, can I convert this:

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

:

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

is there a built-in class for this? as sql server 2005 seems to remove all xml formatting to save space or something else ...

+5
source share
5 answers

If you are using .NET 3.5, you can load it as XDocument, and then just call ToString (), which will indent accordingly. For example:

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);
    }
}

Result:

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

If you write it to a file or another stream, it XDocument.Savewill (by default) also be indented.

( , XElement , XDocument.)

+16

/ XML ?

XmlWriter XmlWriterSettings, "" :

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

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

XDocument :

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

xml, :

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

, # VB.NET . .

, XML- String.

,

:

[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

simpyl :

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

[#]

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();
   }

Then you can simply call this function as:

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

NOTE. I have not tried the C # version, but it should work.

Hope this helps.

0
source

All Articles