XML Concepts
Root XML root node, only and must have one (above for linklibrary)
element node elements (such as link)
Attribute node attributes (such as Cat, Url, Desc)
Content contents (non-blank text, CDATA, Element, EndElement, EntityReference, or endentity) nodes
System.Xml Space
The following classes are suitable for fast streaming read and write XML files (Note: DOM is suitable for random reads and writes)
XmlReader, XmlWriter,
XmlTextReader, XmlTextWriter
XmlValidatingReader, Xmlvalidatingwriter adds DTD and schema validation, thus providing validation of data
XmlNodeReader, XmlNodeWriter the XmlNode as its source.
Node type (public enum XmlNodeType)
XmlDeclaration XML declarations (for example, <?xml version= "1.0"?>).
Attribute attributes (for example, id= "123").
CDATA CDATA Sections (for example, <! [Cdata[my escaped text]]>).
Comment annotations (for example,,<!--my Comment-->)
Document provides access to the entire XML document as the root of the document tree.
DocumentFragment the document fragment.
DocumentType the document type declaration indicated by the following markup (for example, <! doctype...>).
Element elements (for example,,<item>).
EndElement the end element tag (for example,,</item>).
Entity entity declarations (for example, <! entity...>).
Endentity returns when the XmlReader arrives at the end of an entity substitution because of a call to ResolveEntity.
EntityReference entity references (for example,,#).
None if the Read method is not called, it is returned by XmlReader.
Notation the notation in a document type declaration (for example, <! notation...>).
ProcessingInstruction processing instructions (for example, <?pi test?>).
SignificantWhitespace white space between tags in a mixed content model or a xml:space= "preserve" range.
The textual content of the text node.
White space between the whitespace tags.
------------------------------------------------------------------------
Using XmlTextWriter to write quickly
------------------------------------------------------------------------
Closing
XmlTextWriter writer = new XmlTextWriter (@ "C:/mywriter.xml", null);
Writer. Close ();
Starting and ending XML document (<?xml version= "1.0"?>
Writer. WriteStartDocument ();
Writer. Enddocument ();
declaring XML Formats
Writer. formatting = formatting.indented;
Writer. Indentation = number of characters indented
Writer. IndentChar = indent character
Writer. QuoteChar = Single quotation mark | double quotation mark
Output comment (<!--comment text-->)
Writer. WriteComment ("comment text");
Output elements (<Element>ElementVal</Element>)
Writer. WriteElementString ("Element", "Elementval");
Or
Writer. Startelement ("Element");
Writer. WriteString ("Elementval");
Writer. EndElement ();
Output element properties (<element property= "Propertyval" >ElementVal</Element>)
Writer. Startelement ("Element");
Writer. WriteAttributeString ("Property", "Propertyval");
Writer. WriteString ("Elementval");
Writer. EndElement ();
Output CDATA (<! Cdata>....</cdata>
Writecdata ("...")
Output character Buffer text
WriteChars (char[], startpos, length)
An XML file (Bookstore.xml) is known as follows:
|
<?xml version= "1.0" encoding= "gb2312"?> <bookstore> <book genre= "Fantasy" isbn= "2-3631-4" > <title>oberon ' s legacy</title> <author>corets, eva</author> <price>5.95</price> </book> </bookstore> |
1. Insert a <book> node into the <bookstore> node:
|
XmlDocument xmldoc=new XmlDocument (); Xmldoc.load ("Bookstore.xml"); XmlNode Root=xmldoc.selectsinglenode ("bookstore");//Find <bookstore> XmlElement xe1=xmldoc.createelement ("book");//Create a <book> node Xe1. SetAttribute ("Genre", "Li Zhanhong");/set the node genre property Xe1. SetAttribute ("ISBN", "2-3631-4");//Set the node ISBN property
XmlElement xesub1=xmldoc.createelement ("title"); Xesub1. Innertext= "CS from getting started to proficient";/Set Text node Xe1. AppendChild (XESUB1);//Add to <book> node XmlElement xesub2=xmldoc.createelement ("author"); Xesub2. innertext= "Hou Jie"; Xe1. AppendChild (XESUB2); XmlElement xesub3=xmldoc.createelement ("price"); Xesub3. innertext= "58.3"; Xe1. AppendChild (XESUB3);
Root. AppendChild (XE1);//Add to <bookstore> node Xmldoc.save ("Bookstore.xml"); |
//================
The results are:
|
<?xml version= "1.0" encoding= "gb2312"?> <bookstore> <book genre= "Fantasy" isbn= "2-3631-4" > <title>oberon ' s legacy</title> <author>corets, eva</author> <price>5.95</price> </book> <book genre= "Li Zhanhong" isbn= "2-3631-4" > <title>cs from getting started to mastering </title> <author> Hou Jie </author> <price>58.3</price> </book> </bookstore> |
2, modify the node: The genre property value of "Li Zhanhong" node genre value changed to "Update Li Zhanhong", the node's child node <author> text modified to "Asia wins."
|
XmlNodeList Nodelist=xmldoc.selectsinglenode ("bookstore"). childnodes;//gets all the child nodes of the bookstore node foreach (XmlNode xn in nodelist)//traverse all child nodes { XmlElement xe= (XmlElement) xn;//Converts a child node type to a XmlElement type if (XE. GetAttribute ("genre") = = "Li Zhanhong")//If genre property value is "Li Zhanhong" { Xe. SetAttribute ("Genre", "Update Li Zhanhong");//Modify this property to "Update Li Zhanhong"
XmlNodeList Nls=xe. CHILDNODES;//continues to fetch all child nodes of the XE child node foreach (XmlNode xn1 in NLS)//traversal { XmlElement xe2= (XmlElement) xn1;//conversion type if (Xe2. name== "Author")//If found { Xe2. innertext= "Asia wins";//Modify break;//find out and get out of here. } } Break } }
Xmldoc.save ("Bookstore.xml"),//save. |
//=================
The final results are:
|
<?xml version= "1.0" encoding= "gb2312"?> <bookstore> <book genre= "Fantasy" isbn= "2-3631-4" > <title>oberon ' s legacy</title> <author>corets, eva</author> <price>5.95</price> </book> <book genre= "Update Li Zhanhong" isbn= "2-3631-4" > <title>cs from getting started to mastering </title> <author> Asia wins </author> <price>58.3</price> </book> </bookstore> |
3, delete <book genre= "Fantasy" isbn= "2-3631-4" > Node genre properties, delete <book genre= "update Li Zhanhong" isbn= "2-3631-4" > node.
|
XmlNodeList Xnl=xmldoc.selectsinglenode ("bookstore"). ChildNodes;
foreach (XmlNode xn in xnl) { XmlElement xe= (XmlElement) xn; |
if (XE. GetAttribute ("genre") = = "Fantasy")
{
Xe. RemoveAttribute ("genre");//Delete genre property
}
else if (XE. GetAttribute ("genre") = = "Update Li Zhanhong")
{
Xe. RemoveAll ()//delete all contents of the node
}
}
Xmldoc.save ("Bookstore.xml");
//====================
The final results are:
|
<?xml version= "1.0" encoding= "gb2312"?> <bookstore> <book isbn= "2-3631-4" > <title>oberon ' s legacy</title> <author>corets, eva</author> <price>5.95</price> </book> <book> </book> </bookstore> |
4, display all the data.
|
XmlNode Xn=xmldoc.selectsinglenode ("bookstore");
XmlNodeList Xnl=xn. ChildNodes;
foreach (XmlNode xnf in XNL) { XmlElement xe= (XmlElement) xnf; Console.WriteLine (XE. GetAttribute ("genre"))//Display property value Console.WriteLine (XE. GetAttribute ("ISBN"));
XmlNodeList Xnf1=xe. ChildNodes; foreach (XmlNode xn2 in Xnf1) { Console.WriteLine (xn2. innertext);//Display child node point text } } |
------------------------------------------------------------------------
Write routines
------------------------------------------------------------------------
[C-sharp] View Plain copy print? xmltextwriter writer = new xmltextwriter (filename, null); //Use indenting for readability. writer. formatting = formatting.indented; //xml Statement (write the xml delcaration. ) writer. WriteStartDocument (); //preprocessing instructions (write the processinginstruction node.) string pitext= "type=" text/xsl " href=" book.xsl ""; writer. WriteProcessingInstruction ("Xml-stylesheet", pitext); //Document type (Write the documenttype node.) writer. Writedoctype ("book", null , null, "<!") entity h "Hardcover" > "); //Notes (Write a comment node.) writer. WriteComment ("Sample xml"); //root element (write a root element.) writer. WriteStartElement ("book"); //property value (Write the geNre attribute.) writer. WriteAttributeString ("Genre", "novel"); //property value (Write the isbn attribute.) writer. WriteAttributeString ("ISBN", "1-8630-014"); //write the title. writer. WriteElementString ("title", "The handmaid" S tale "); //write the style element. writer. WriteStartElement ("style"); writer. Writeentityref ("H"); writer. WriteEndElement (); //Text element node (write the price.) writer. WriteElementString ("Price", "19.95"); //[cdata] writer. Writecdata ("prices 15% off!!"); //write the close tag for the root element. Writer. WriteEndElement (); writer. WriteEndDocument (); //write the xml to file and close the writer. WRIter. Flush (); writer. Close (); //load the file into an xmldocument to ensure well formed XML. xmldocument doc = new xmldocument (); //preserve white space for readability. Doc. preservewhitespace = true; //load the file. Doc. Load (filename); //display the xml content to the console. Console.Write (Doc. INNERXML);