Read and Write XML Without Loading an Entire Document into Memory - CSharp XML

CSharp examples for XML:XML Document

Description

Read and Write XML Without Loading an Entire Document into Memory

Demo Code


using System;/*w w w . j av  a  2s  .c  o m*/
using System.Xml;
using System.IO;
using System.Text;

public class ReadWriteXml
{
    private static void Main()
    {
        FileStream fs = new FileStream("products.xml", FileMode.Create);
        XmlWriter w = XmlWriter.Create(fs);

        w.WriteStartDocument();
        w.WriteStartElement("products");

        w.WriteStartElement("product");
        w.WriteAttributeString("id", "1001");
        w.WriteElementString("productName", "Car");
        w.WriteElementString("productPrice", "0.99");
        w.WriteEndElement();

        w.WriteStartElement("product");
        w.WriteAttributeString("id", "1002");
        w.WriteElementString("productName", "test test test");
        w.WriteElementString("productPrice", "102.99");
        w.WriteEndElement();

        // End the document.
        w.WriteEndElement();
        w.WriteEndDocument();
        w.Flush();
        fs.Close();

        Console.WriteLine("Document created. Press Enter to read the document.");


        fs = new FileStream("products.xml", FileMode.Open);
        XmlReader r = XmlReader.Create(fs);

        while (r.Read())
        {
            if (r.NodeType == XmlNodeType.Element)
            {
                Console.WriteLine();
                Console.WriteLine("<" + r.Name + ">");
                if (r.HasAttributes)
                {
                    for (int i = 0; i < r.AttributeCount; i++)
                    {
                        Console.WriteLine("\tATTRIBUTE: " + r.GetAttribute(i));
                    }
                }
            }
            else if (r.NodeType == XmlNodeType.Text)
            {
                Console.WriteLine("\tVALUE: " + r.Value);
            }
        }
    }
}

Result


Related Tutorials