Creare un documento XML con la classe XmlTextWriter

di Daniele Bochicchio, in ASP.NET, XML, System.Xml,

Si possono creare documenti XML all'interno del .NET Framework sfruttando diversi approcci.
E' interessante l'utilizzo della classe XmlTextWriter, che troviamo nel namespace System.Xml e che eredita da XmlWriter.
E' necessario associare uno stream all'oggetto XmlTextWriter appena creato: nel nostro esempio utilizziamo lo stream di risposta, ma si potrebbe scegliere un qualsiasi altro stream.

Il metodo WriteStartElement apre un nuovo tag. Utile quando bisogna aggiungere attributi ad un tag (attraverso WriteAttributeString) o altri tag annidati.
WriteEndElement è la controparte e va richiamato sempre per aggiungere il tag di chiusura.
All'interno del ciclo vengono invece create diverse chiavi, una delle quali attraverso l'uso del metodo WriteRaw aggiunge delle sezioni .
In realtà può essere utilizzato anche per altri scopi, come aggiungere l'intestazione XML con l'encoding, oppure dei commenti all'interno del documento XML.
Infine il metodo WriteElementString può essere sfruttato per aggiungere una chiave con il valore associato.
Segue un esempio:

<%@ Import Namespace="System.Xml"%>
<script runat="server" Language="C#">
public void Page_Load() {

  Response.ContentType = "text/xml";

   // creo un nuovo oggetto XmlTextWriter con output
  // sullo stream dell'oggetto Response
  XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Encoding.Default);

  writer.Formatting = Formatting.Indented;

  // aggiungo l'intestazione XML
  writer.WriteRaw("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>");

  // apro la root
  writer.WriteStartElement("root");

  // aggiungo un attributo
  writer.WriteAttributeString("attributo","valore");

  // apro nuovo tag
  writer.WriteStartElement("items");

  // chiavi interne
  writer.WriteElementString("chiave", "valore");
  writer.WriteElementString("chiave2", "valore2");

  // ciclo per inserire nuove chiavi
  for(int i = 0; i < 15; i++)
  {
    writer.WriteStartElement("item");
    // chiave interna
    writer.WriteElementString("numero", i.ToString());

    // scrive in modalità raw
    writer.WriteStartElement("testo");
    writer.WriteRaw("<![CDATA[Questo è un test con caratteri <>]]>");
    // chiudo tag testo
    writer.WriteEndElement();

    // chiudo tag item
    writer.WriteEndElement();
  }

  // chiudo tag items
  writer.WriteEndElement();

  // chiudo tag root
  writer.WriteEndElement();

  // scrivo a video e chiudo lo stream
  writer.Flush();
  writer.Close();
    
}
</script>

Per vedere all'opera lo script:
https://www.aspitalia.com/liste/usag/esempi.aspx?ID=507

Per un tutorial su XML si veda:
http://xml.aspitalia.com/

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi