Csharp/C Sharp/XML/Node Type
Содержание
Read XML data from xml file: Node type, name
<source lang="csharp"> using System; using System.IO; using System.Xml;
class TestXMLReader { static void Main(string[] args) { TestXMLReader tstObj = new TestXMLReader(); StreamReader myStream = new StreamReader("books.xml"); XmlTextReader xmlTxtRdr = new XmlTextReader(myStream); while(xmlTxtRdr.Read()) { if(xmlTxtRdr.NodeType == XmlNodeType.Element && xmlTxtRdr.Name == "A") { tstObj.ProcessMyDocument(xmlTxtRdr); } } } public void ProcessMyDocument(XmlTextReader reader) { Console.WriteLine("Start processing:" + reader.GetAttribute("property")); while(!(reader.NodeType == XmlNodeType.EndElement && reader.Name == "B") && reader.Read()) { if(reader.NodeType == XmlNodeType.Element && reader.Name == "C") { Console.WriteLine("itemcode:" + reader.GetAttribute("c")); } } } }
/* <books>
<A property="a"> text <C c="aaa" >textg</C> <D>99999</D> </A>
</books>
- /
</source>
XmlNodeType Text
<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>
XML reader: deal with various NodeType
<source lang="csharp"> // Reading an XML document. using System; using System.Windows.Forms; using System.Xml; public class Test{
static void Main() { XmlDocument document = new XmlDocument(); document.Load( "books.xml" ); XmlNodeReader reader = new XmlNodeReader( document ); int depth = -1; while ( reader.Read() ) { switch ( reader.NodeType ) { case XmlNodeType.Element: depth++; TabOutput( depth ); Console.WriteLine("<" + reader.Name + ">" + "\r\n"); if ( reader.IsEmptyElement ) depth--; break; case XmlNodeType.rument: TabOutput( depth ); Console.WriteLine("\r\n"); break; case XmlNodeType.Text: TabOutput( depth ); Console.WriteLine("\t" + reader.Value + "\r\n"); break; case XmlNodeType.XmlDeclaration: TabOutput( depth ); Console.WriteLine("<?" + reader.Name + " " + reader.Value + " ?>\r\n"); break; case XmlNodeType.EndElement: TabOutput( depth ); Console.WriteLine("</" + reader.Name + ">\r\n"); depth--; break; } } } static void TabOutput( int number ) { for ( int i = 0; i < number; i++ ) Console.Write("\t"); }
}
</source>
XML write: element, attribute, cddata, namespace and entity reference
<source lang="csharp"> using System; using System.IO; using System.Text; using System.Xml; public class WriteXml {
public static void Main(string [] args) { XmlTextWriter writer = new XmlTextWriter(Console.Out); writer.Formatting = Formatting.Indented; writer.WriteStartDocument(true); writer.WriteComment("this is a comment"); writer.WriteStartElement("root"); writer.WriteAttributeString("id","1"); writer.WriteStartAttribute("mynamespace", "name", "foo"); writer.WriteString("bar"); writer.WriteEndAttribute(); // Write another element writer.WriteElementString("element1","some characters"); writer.WriteStartElement("cdataElement"); writer.WriteAttributeString("date",DateTime.Now.ToString()); writer.WriteCData("< & would choke on"); writer.WriteString("< & & & "); writer.WriteEndElement(); // Write an empty element writer.WriteStartElement("emptyElement"); writer.WriteEndElement(); // Write another empty element writer.WriteStartElement("emptyElement","Empty"); writer.WriteFullEndElement(); // Write some text writer.WriteString("One string "); writer.WriteEntityRef("amp"); writer.WriteString(" another."); // Close the root element writer.WriteEndElement(); // End the document writer.WriteEndDocument(); writer.Flush(); writer.Close(); }
}
</source>