Monday, May 5, 2008

Xml NameSpace

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: