Csharp/C Sharp/XML/XML Read

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

Access Attributes

<source lang="csharp">

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));
       }
   }

}

      </source>


If a Xml node Has Attributes

<source lang="csharp"> 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);
           }
       }
   }

}

      </source>


Illustrates the XmlTextReader class

<source lang="csharp"> /* 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>

  • /
      </source>


Load xml document from xml file

<source lang="csharp"> 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);
   }
 }


      </source>


Load Xml Document Sample

<source lang="csharp"> /*

* 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>

  • /
      </source>


Read An XML File

<source lang="csharp"> /*

* 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();
   }
 }

}

      </source>


Reading from an XML file.

<source lang="csharp"> 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();
   }

}

      </source>


Read XML From URL

<source lang="csharp"> /*

* 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();
   }
 }

}

      </source>