Effektiv skrivning af XML i .NET

Skal man logge data i et let tilgængeligt format, kan man med fordel benytte sig af XML. Det er let at arbejde med også udenfor systemet og det er let at udvide med flere informationer, hvis man skulle have behov for dette.

Dette kan gøres således:

public void AppendToLog(string text)
{
   using (FileStream fs = File.Open("logentries.xml", 
                                    FileMode.Append, 
                                    FileAccess.Write, 
                                    FileShare.Read)) 
   {
      XmlTextWriter writer = new XmlTextWriter(fs, Encoding.UTF8);
      writer.WriteElementString("entry", "", text);
      writer.WriteWhitespace("\n");
      writer.Close();
   }
}

Dette resulterer imidlertid kun i en liste af XMLNodes i en fil og munder derfor ud i et ugyldigt XML-dokument. Dette kan dog reddes ved at lave en anden XML-fil, som linker logentries.xml ind og gør det til en del af den nye XML-fil. Dette gøres således:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!DOCTYPE root [
  <!ENTITY frags SYSTEM "logentries.xml">
]>
<root>
&frags;
</root>

Nu kan denne XML-fil åbnes i en XML-viewer (f.eks. Internet Explorer eller XmlDocument-objektet) og danne grundlag for visning af XML-loggen (logentries.xml) øverst.

Comment