Csharp/CSharp Tutorial/XML/XmlTextReader

Материал из .Net Framework эксперт
Версия от 12:17, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Copy one xml document as a sub element into another xml document

using System;
using System.Xml;
class MainClass
{
    static void Main(string[] args)
    {
        XmlTextWriter writer = new XmlTextWriter("C:\\xmlWriterTest.xml", null);
        writer.WriteStartDocument();

        XmlTextReader reader = new XmlTextReader(@"C:\Sample.xml");
        
        while (!reader.EOF)
        {
            writer.WriteNode(reader, false);
        }

        // Ends the document.
        writer.WriteEndDocument();
        writer.Close();
        return;
    }
}

Create XmlTextReader from StringReader

using System;
using System.IO;
using System.Xml;
class MainClass
{
  static void Main(string[] args)
  {
    //StringReader stream = new StringReader("Sample.xml");
    // Thanks for Scott R (rradjah at yahoo.ru)
        StringReader stream = new StringReader("<?xml version="1.0"?><foo></foo>");
    XmlTextReader reader = new XmlTextReader(stream);
    while (reader.Read())
    {
      //TODO -
    }
    if (reader != null)
      reader.Close();
  }
}

Load xml document in XmlTextReader to XmlDocument

using System;
using System.Xml;
class MainClass
{
  public static void Main() 
  {
    XmlTextReader xtr = new XmlTextReader(@"c:\test.xml");
    xtr.WhitespaceHandling = WhitespaceHandling.None;
    XmlDocument xd = new XmlDocument();
    xd.Load(xtr);
    XmlNode xnodDE = xd.DocumentElement;
    ChildDisplay(xnodDE, 0);
    xtr.Close();
  }
  private static void ChildDisplay(XmlNode xnod, int level)
  {
    XmlNode xnodWorking;
    String pad = new String(" ", level * 2);
    Console.WriteLine(pad + xnod.Name + "(" + xnod.NodeType.ToString() + ": " + xnod.Value + ")");
    
    if (xnod.NodeType == XmlNodeType.Element)
    {
      XmlNamedNodeMap mapAttributes = xnod.Attributes;
      for(int i=0; i<mapAttributes.Count; i++)
      {
        Console.WriteLine(pad + " " + mapAttributes.Item(i).Name + " = " +  mapAttributes.Item(i).Value);
      }
    }
    
    if (xnod.HasChildNodes)
    {
      xnodWorking = xnod.FirstChild;
      while (xnodWorking != null)
      {
        ChildDisplay(xnodWorking, level+1);
        xnodWorking = xnodWorking.NextSibling;
      }
    }
  }
}
MyTestElements(Element: )
  TestBoolean(Element: )
    #text(Text: true)

Read and write XML document

using System;
using System.Collections;
using System.Data;
using System.Xml;

class MainClass{
  public static void Main(){
    XmlDocument doc = new XmlDocument();
    // read 
    doc.Load( "Sample.xml" );
    Console.WriteLine(doc.OuterXml);
    // write
    XmlTextWriter tw = new XmlTextWriter( "testOut.xml", null );
  tw.Formatting = Formatting.Indented;
  tw.Indentation = 4;
  doc.Save( tw );
  tw.Close();
        
  }
}
<?xml version="1.0" encoding="utf-8"?><scientists xmlns="http://tempuri.org/sample.xsd"><physicist><
name>Newton</name><discovery>gravity</discovery></physicist><chemist><name>Curie</name><discovery>ra
dioactivity</discovery></chemist><herpetologist><name>Steve Irwin</name><discovery>they bite!</disco
very></herpetologist></scientists>

Use XmlTextReader to load xml document from file

using System;
using System.Xml;
class MainClass
{
  public static void Main() 
  {
    XmlTextReader xtr = new XmlTextReader(@"c:\test.xml");
    xtr.WhitespaceHandling = WhitespaceHandling.None;
    XmlDocument xd = new XmlDocument();
    xd.Load(xtr);
    XmlNode xnodDE = xd.DocumentElement;
    ChildDisplay(xnodDE, 0);
    xtr.Close();
  }
  private static void ChildDisplay(XmlNode xnod, int level)
  {
    XmlNode xnodWorking;
    String pad = new String(" ", level * 2);
    Console.WriteLine(pad + xnod.Name + "(" + xnod.NodeType.ToString() + ": " + xnod.Value + ")");
    
    if (xnod.NodeType == XmlNodeType.Element)
    {
      XmlNamedNodeMap mapAttributes = xnod.Attributes;
      for(int i=0; i<mapAttributes.Count; i++)
      {
        Console.WriteLine(pad + " " + mapAttributes.Item(i).Name + " = " +  mapAttributes.Item(i).Value);
      }
    }
    
    if (xnod.HasChildNodes)
    {
      xnodWorking = xnod.FirstChild;
      while (xnodWorking != null)
      {
        ChildDisplay(xnodWorking, level+1);
        xnodWorking = xnodWorking.NextSibling;
      }
    }
  }
}
MyTestElements(Element: )
  TestBoolean(Element: )
    #text(Text: true)

XmlTextReader: read and move

using System;
using System.Xml;
class MainClass
{
    static void Main(string[] args)
    {
    XmlTextReader reader = new XmlTextReader(@"C:\books.xml");
    if (reader.Read())
    {
      Console.WriteLine(reader.Name);
      reader.MoveToContent(); 
      Console.WriteLine(reader.Name);
    }
    }
}

XmlTextReader: Skip

using System;
using System.Drawing;
using System.Collections;
using System.ruponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;
using System.Xml;
public class MainClass{
   public static void Main(){
    XmlTextReader reader = new XmlTextReader(@"C:\books.xml");
    while (reader.Read())
        {
            if (reader.Name != "bookstore")
                reader.Skip();
            else
            {    
                Console.WriteLine("Name: "+reader.Name);
                Console.WriteLine("Level of the node: " +reader.Depth.ToString());
                Console.WriteLine("Value: "+reader.Value);
            }   
        }
  }
}

XmlTextWriter: Write Comment

using System;
using System.Xml;
class MainClass
{
    static void Main(string[] args)
    {
        XmlTextWriter writer = new XmlTextWriter("C:\\xmlWriterTest.xml", null);
        writer.WriteStartDocument();
        // Write comments
        writer.WriteComment("This program uses XmlTextWriter.");
        // Ends the document.
        writer.WriteEndDocument();
        writer.Close();
        return;
    }
}

XmlTextWriter: write start element

using System;
using System.Xml;
class MainClass
{
    static void Main(string[] args)
    {
        XmlTextWriter writer = new XmlTextWriter("C:\\xmlWriterTest.xml", null);
        writer.WriteStartDocument();
        // Write first element
        writer.WriteStartElement("root");
        writer.WriteStartElement("r", "RECORD", "urn:record");
        // Ends the document.
        writer.WriteEndDocument();
        writer.Close();
        return;
    }
}

XmlTextWriter: write string

using System;
using System.Xml;
class MainClass
{
    static void Main(string[] args)
    {
        XmlTextWriter writer = new XmlTextWriter("C:\\xmlWriterTest.xml", null);
        writer.WriteStartDocument();
        // Write next element
        writer.WriteStartElement("FirstName","");
        writer.WriteString("Mahesh");
        writer.WriteEndElement();
        // Ends the document.
        writer.WriteEndDocument();
        writer.Close();
        return;
    }
}