Csharp/C Sharp/XML/XML Read

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Access Attributes

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
class Program {
    static void Main(string[] args) {
        XmlDocument documentation = new XmlDocument();
        documentation.Load("DocumentedClasses.xml");
        XmlNodeList memberNodes = documentation.SelectNodes("//member");
        List<XmlNode> typeNodes = new List<XmlNode>();
        foreach (XmlNode node in memberNodes) {
            if (node.Attributes["name"].Value.StartsWith("T")) {
                typeNodes.Add(node);
            }
        }
        foreach (XmlNode node in typeNodes) {
            Console.WriteLine("- {0}", node.Attributes["name"].Value.Substring(2));
        }
    }
}


If a Xml node Has Attributes

using System;
using System.Xml;
using System.IO;
using System.Text;
class MainClass {
    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", "Gourmet Coffee");
        w.WriteElementString("productPrice", "0.99");
        w.WriteEndElement();
        w.WriteStartElement("product");
        w.WriteAttributeString("id", "1002");
        w.WriteElementString("productName", "Blue China Tea Pot");
        w.WriteElementString("productPrice", "102.99");
        w.WriteEndElement();
        w.WriteEndElement();
        w.WriteEndDocument();
        w.Flush();
        fs.Close();
        fs = new FileStream("products.xml", FileMode.Open);
        XmlReader r = XmlReader.Create(fs);
        while (r.Read()) {
            if (r.NodeType == XmlNodeType.Element) {
                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);
            }
        }
    }
}


Illustrates the XmlTextReader class

/*
Mastering Visual C# .NET
by Jason Price, Mike Gunderloy
Publisher: Sybex;
ISBN: 0782129110
*/

/*
  Example20_2.cs illustrates the XmlTextReader class
*/
using System;
using System.Xml;
public class Example20_2 
{
    // Display a node and its children
    private static void AddChildren(XmlNode xnod, int level)
    {
        XmlNode xnodWorking;
        String pad = new String(" ", level * 2);
        Console.WriteLine(pad + xnod.Name + "(" + xnod.NodeType.ToString() 
         + ": " + xnod.Value + ")");
        
        // if this is an element, extract any attributes
        if (xnod.NodeType == XmlNodeType.Element)
        {
            XmlNamedNodeMap mapAttributes = xnod.Attributes;
            for(int i=0; i<mapAttributes.Count; i+=1)
            {
                Console.WriteLine(pad + " " + mapAttributes.Item(i).Name 
                    + " = " +  mapAttributes.Item(i).Value);
            }
        }
        
        // call recursively on all children of the current node
        if (xnod.HasChildNodes)
        {
            xnodWorking = xnod.FirstChild;
            while (xnodWorking != null)
            {
                AddChildren(xnodWorking, level+1);
                xnodWorking = xnodWorking.NextSibling;
            }
        }

    }
    public static void Main() 
    {
        // use an XmlTextReader to open an XML document
        XmlTextReader xtr = new XmlTextReader(@"c:\temp\Cust4.xml");
        xtr.WhitespaceHandling = WhitespaceHandling.None;
        // load the file into an XmlDocuent
        XmlDocument xd = new XmlDocument();
        xd.Load(xtr);
        // get the document root node
        XmlNode xnodDE = xd.DocumentElement;
        // recursively walk the node tree
        AddChildren(xnodDE, 0);
        // close the reader
        xtr.Close();
    }
}
//File: Cust4.xml
/*
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="Cust.xsl"?>
<NewDataSet>
    <Customers>
        <CustomerID>ALFKI</CustomerID>
        <CompanyName>Alfreds Futterkiste</CompanyName>
        <ContactName>Maria Anders</ContactName>
        <ContactTitle>Sales Representative</ContactTitle>
        <Address>Obere Str. 57</Address>
        <City>Berlin</City>
        <PostalCode>12209</PostalCode>
        <Country>Germany</Country>
        <Phone>030-0074321</Phone>
        <Fax>030-0076545</Fax>
    </Customers>
    <Customers>
        <CustomerID>BONAP</CustomerID>
        <CompanyName>app</CompanyName>
        <ContactName>Laurence Lebihan</ContactName>
        <ContactTitle>Owner</ContactTitle>
        <Address>12, rue des Bouchers</Address>
        <City>Marseille</City>
        <PostalCode>13008</PostalCode>
        <Country>France</Country>
        <Phone>91.24.45.40</Phone>
        <Fax>91.24.45.41</Fax>
    </Customers>
</NewDataSet>
*/


Load xml document from xml file

using System;
using System.Xml;
  class XMLDemo{
    [STAThread]
    static void Main(string[] args) {
      XmlDocument xmlDom = new XmlDocument();
      xmlDom.AppendChild(xmlDom.CreateElement("", "books", ""));
      XmlElement xmlRoot = xmlDom.DocumentElement;
      XmlElement xmlBook;
      XmlElement xmlTitle, xmlAuthor, xmlPrice;
      XmlText xmlText;
    
      xmlBook= xmlDom.CreateElement("", "A", "");
      xmlBook.SetAttribute("property", "", "a");
    
      xmlTitle = xmlDom.CreateElement("", "B", "");
      xmlText = xmlDom.CreateTextNode("text");
      xmlTitle.AppendChild(xmlText);
      xmlBook.AppendChild(xmlTitle);
            
      xmlRoot.AppendChild(xmlBook);
    
      xmlAuthor = xmlDom.CreateElement("", "C", "");
      xmlText = xmlDom.CreateTextNode("textg");
      xmlAuthor.AppendChild(xmlText);
      xmlBook.AppendChild(xmlAuthor);
            
      xmlPrice = xmlDom.CreateElement("", "D", "");
      xmlText = xmlDom.CreateTextNode("99999");
      xmlPrice.AppendChild(xmlText);
      xmlBook.AppendChild(xmlPrice);
    
      xmlRoot.AppendChild(xmlBook);
    
      Console.WriteLine(xmlDom.InnerXml);
      xmlDom.Save("books.xml");
      
      XmlDocument xmlDom2 = new XmlDocument();
      xmlDom2.Load("books.xml");
      Console.WriteLine(xmlDom2.InnerXml);
    }
  }


Load Xml Document Sample

/*
 * C# Programmers Pocket Consultant
 * Author: Gregory S. MacBeth
 * Email: gmacbeth@comporium.net
 * Create Date: June 27, 2003
 * Last Modified Date:
 * Version: 1
 */
using System;
using System.IO;
using System.Xml;
namespace Client.Chapter_22___XML
{
  public class LoadXmlDocumentSample
  {
    private const String document = "books.xml";
    public static void Main()
    {
      LoadXmlDocumentSample myLoadXmlDocumentSample = new LoadXmlDocumentSample();
      myLoadXmlDocumentSample.Run(document);
    }
    public void Run(String args)
    {
      try
      {
        // Load the XML from file
        Console.WriteLine();
        Console.WriteLine("Loading file {0} ...", args);
        XmlDataDocument myXmlDocument = new XmlDataDocument();
        myXmlDocument.Load(args);
        Console.WriteLine("XmlDataDocument loaded with XML data successfully ...");
        // Display the XML document.
        myXmlDocument.Save(Console.Out);
      }
      catch (Exception e)
      {
        Console.WriteLine("Exception: {0}", e.ToString());
      }
    }
  } 
}
//File:book.xml
/*
<book>
    <title>Book title</title>
</book>
*/


Read An XML File

/*
 * C# Programmers Pocket Consultant
 * Author: Gregory S. MacBeth
 * Email: gmacbeth@comporium.net
 * Create Date: June 27, 2003
 * Last Modified Date:
 * Version: 1
 */
using System;
using System.IO;
using System.Xml;

namespace Client.Chapter_22___XML
{
  public class ReadAnXMLFile
  {
    private const string doc = "Test.xml";
    static void Main(string[] args)
    {
      XmlTextReader reader = null;
      // Load the file with an XmlTextReader
      reader = new XmlTextReader(doc);
      // Read the File
      while (reader.Read())
      {
        //TODO - 
      }
      if (reader != null)
        reader.Close();
    }
  }
}


Reading from an XML file.

using System;
using System.Xml;
public class MainClass {
    public static void Main(string[] args) {
        XmlTextReader reader = new XmlTextReader(args[0]);
        while (reader.Read()) {
            switch (reader.NodeType) {
                case XmlNodeType.Element: // The node is an Element
                    Console.WriteLine("Element: " + reader.Name);
                    while (reader.MoveToNextAttribute()) // Read attributes
                        Console.WriteLine("  Attribute: [" +
                         reader.Name + "] = ""
                           + reader.Value + """);
                    break;
                case XmlNodeType.DocumentType: // The node is a DocumentType
                    Console.WriteLine("Document: " + reader.Value);
                    break;
                case XmlNodeType.rument:
                    Console.WriteLine("Comment: " + reader.Value);
                    break;
            }
        }
        reader.Close();
    }
}


Read XML From URL

/*
 * C# Programmers Pocket Consultant
 * Author: Gregory S. MacBeth
 * Email: gmacbeth@comporium.net
 * Create Date: June 27, 2003
 * Last Modified Date:
 * Version: 1
 */
using System;
using System.IO;
using System.Xml;

namespace Client.Chapter_22___XML
{
  public class ReadXMLFromURL
  {    
    static void Main(string[] args)
    {
      string localURL = "http:\\somehost\\Test.xml";
      XmlTextReader myXmlURLreader = null;
      myXmlURLreader = new XmlTextReader (localURL);
      while (myXmlURLreader.Read())
      {
        //TODO - 
      }
      if (myXmlURLreader != null)
        myXmlURLreader.Close();
    }
  }
}