Xml,extensible markup language is used to transfer,store data and Dot net has system.xml namespace to manage xml documents here are some code snippets for example....
using XMLDocument
//declare & create xml document
XmlDocument xDoc = new XmlDocument();
XmlElement xElm;
int childCounter;
int grandChildCounter;
//create xml declaration first
xDoc.AppendChild(xDoc.CreateXmlDeclaration("1.0","utf-8",null));
//create the root node and append into doc
xElm=xDoc.CreateElement("myRoot");
xDoc.AppendChild(xElm);
//child loop
for(childCounter=1;childCounter<=4;childCounter++)
{
XmlElement childElmt;
XmlAttribute childElmAttr;
//create child with ID
childElmt=xDoc.CreateElement("myChild");
childElmAttr=xDoc.CreateAttribute("ID");
childElmAttr.Value=childCounter.ToString();
childElmt.Attributes.Append(childElmAttr);
//append element into the root element
xElm.AppendChild(childElmt);
for(grandChildCounter=1;grandChildCounter<=5;grandChildCounter++)
{
//create grandchildren
childElmt.AppendChild(xDoc.CreateElement(string.Format("grandChild_{0}",grandChildCounter)));
}
}
//save to file
xDoc.Save("xmldemo.xml");
XPATH XNaVIGATOR
XPathDocument xDoc = new XPathDocument("d:\\xmldemo.xml");
XPathNavigator xNav = xDoc.CreateNavigator();
//select all child elements
XPathExpression xExp = xNav.Compile("//myChild");
//sort....
xExp.AddSort("@ID", XmlSortOrder.Descending, XmlCaseOrder.LowerFirst, "", XmlDataType.Text);
//display the selection
XPathNodeIterator iterator = xNav.Select(xExp);
string s = string.Empty;
XPathNavigator navResult = iterator.Current;
while (iterator.MoveNext())
{
s = string.Format("Type:{0}Name:{1}", navResult.NodeType, navResult.Name);
if (navResult.HasAttributes)
{
navResult.MoveToFirstAttribute();
s += "Attr:";
do{
s+=string.Format("{0}={1}",navResult.Name,navResult.Value);
}while( navResult.MoveToNextAttribute());
}
dvResult.InnerHtml += string.Format("{0}
", s); ;
}
XMLWRITER
XmlTextWriter xTxtWriter = new XmlTextWriter("d:\\employee.xml", System.Text.Encoding.UTF8);
xTxtWriter.Formatting = Formatting.Indented;
xTxtWriter.Indentation = 5;
xTxtWriter.WriteStartDocument();
xTxtWriter.WriteComment(string.Format("date Created:{0}",DateTime.Now));
xTxtWriter.WriteStartElement("Employee_List");
for(int i=0;i<6;i++)
{
//new Employee
xTxtWriter.WriteStartElement("Employee");
xTxtWriter.WriteAttributeString("EmpID",i.ToString());
xTxtWriter.WriteAttributeString("LastName","xxx");
xTxtWriter.WriteAttributeString("FirstName","xx");
xTxtWriter.WriteAttributeString("salary","10000");
xTxtWriter.WriteElementString("HireDate",XmlConvert.ToString(DateTime.Parse("1/1/2003"),
XmlDateTimeSerializationMode.Unspecified));
xTxtWriter.WriteStartElement("Address");
xTxtWriter.WriteElementString("Street","kjf");
xTxtWriter.WriteElementString("State","kjf");
xTxtWriter.WriteElementString("Zip","kjf");
//Adress
xTxtWriter.WriteEndElement();
//Employee
xTxtWriter.WriteEndElement();
}
//employeeList
xTxtWriter.WriteEndElement();
xTxtWriter.Close();
XMLREADER
XmlTextReader xRdr = new XmlTextReader("d:\\employee.xml");
while (xRdr.Read())
{
switch (xRdr.NodeType)
{
case XmlNodeType.XmlDeclaration:
case XmlNodeType.Element:
case XmlNodeType.Comment:
{
string s = string.Empty;
s = string.Format("{0}:{1}={2}
", xRdr.NodeType, xRdr.Name, xRdr.Value);
dvResult.InnerHtml += s;
break;
}
case XmlNodeType.Text:
{
string s = string.Empty;
s = string.Format("-Value:{0}
", xRdr.Value);
dvResult.InnerHtml += s;
break;
}
}
if (xRdr.HasAttributes)
{
while (xRdr.MoveToNextAttribute())
{
string s = string.Empty;
s = string.Format("-Attribute:{0}={1}",xRdr.Name,xRdr.Value);
dvResult.InnerHtml += s;
}
}
}
xRdr.Close();
XML VALIDATOR
XmlReaderSettings xmlSet = new XmlReaderSettings();
xmlSet.ValidationType = ValidationType.DTD;
xmlSet.ProhibitDtd = false;
XmlReader xRdr = XmlReader.Create("d:\\employee.xml", xmlSet);
XmlDocument xDoc = new XmlDocument();
try
{
xDoc.Load(xRdr);
dvResult.InnerHtml = "Valid XML";
}
catch (XmlException ex)
{
dvResult.InnerHtml = ex.Message;
}
finally
{
xRdr.Close();
}
Load XMLDOcument
XmlDocument xDoc = new XmlDocument();
xDoc.Load("d:\\xmldemo.xml");
RecursiveNodes(xDoc.DocumentElement);
private void RecursiveNodes(XmlNode node, int level)
{
string s;
s = string.Format("{0} Type:{1}Name:{2}Attr:",
new string('-', level), node.NodeType, node.Name);
foreach (XmlAttribute attr in node.Attributes)
{
s += string.Format("{0}={1}",attr.Name,attr.Value);
}
s += "
";
dvResult.InnerHtml += s;
foreach (XmlNode chldnode in node.ChildNodes)
{
RecursiveNodes(chldnode, level + 1);
}
}
No comments:
Post a Comment