Showing posts with label XmlAttribute.. Show all posts
Showing posts with label XmlAttribute.. Show all posts

Friday, July 10, 2009

Create xml Using Dom and Use xPath to read value from it.

try
{
XmlDocument xDoc = new XmlDocument();

xDoc.LoadXml("<Country></Country>"); //Created the Parent Node.

XmlNode xCity = xDoc.CreateNode(XmlNodeType.Element, "City", "");
XmlNode xZoneNode = xDoc.CreateNode(XmlNodeType.Element, "Zone", "");
XmlNode xAreaNode = xDoc.CreateNode(XmlNodeType.Element, "Area", "");
XmlAttribute xCountryName = xDoc.CreateAttribute(XmlNodeType.Attribute.ToString(), "Name", "");
XmlNode xCityName = xDoc.CreateNode(XmlNodeType.Element, "Name", "");
xCountryName.Value = "India";
xCityName.InnerText = "Ahmedabad";
xAreaNode.InnerText = "Ahm";

xCity.AppendChild(xCityName);
xZoneNode.AppendChild(xAreaNode);
xCity.AppendChild(xZoneNode);

xDoc.DocumentElement.AppendChild(xCity);

xCity = xDoc.CreateNode(XmlNodeType.Element, "City", "");
xZoneNode = xDoc.CreateNode(XmlNodeType.Element, "Zone", "");
xAreaNode = xDoc.CreateNode(XmlNodeType.Element, "Area", "");
xCityName = xDoc.CreateNode(XmlNodeType.Element, "Name", "");

xCityName.InnerText = "Banglore";
xAreaNode.InnerText = "Bgr";

xCity.AppendChild(xCityName);
xZoneNode.AppendChild(xAreaNode);
xCity.AppendChild(xZoneNode);

xDoc.DocumentElement.AppendChild(xCity);

xCity = xDoc.CreateNode(XmlNodeType.Element, "City", "");
xZoneNode = xDoc.CreateNode(XmlNodeType.Element, "Zone", "");
xAreaNode = xDoc.CreateNode(XmlNodeType.Element, "Area", "");
xCityName = xDoc.CreateNode(XmlNodeType.Element, "Name", "");

xCityName.InnerText = "Pune";
xAreaNode.InnerText = "pn";

xCity.AppendChild(xCityName);
xZoneNode.AppendChild(xAreaNode);
xCity.AppendChild(xZoneNode);

xDoc.DocumentElement.AppendChild(xCity);




xDoc.DocumentElement.Attributes.Append(xCountryName);


//See ur out put here
string outPut = xDoc.DocumentElement.OuterXml;

//-------- This will Give output as ' ---------------//
////< Country Name="India" >
//// < City>
//// < Name >Ahmedabad
//// < Zone >
//// < Area >Ahm< /Area >
//// < /Zone >
//// < /City >
//// < City >
//// < Name >Banglore< /Name >
//// < Zone >
//// < Area >Bgr< /Area >
//// < /Zone >
//// < /City >
//// < City >
//// < Name >Pune
//// < Zone >
//// < Area>pn
//// < /Zone >
////
////

//now to query this Document Using the xPath u can do something like this

string nameParam = "Pune";
//get city name which is dependent upon the given area (set in areaParam)
string cityName = xDoc.DocumentElement.SelectSingleNode("City[@Name='"+nameParam+"']/Zone/Area").InnerText;


//-------- This will Give output as pn' ---------------//
}
catch (Exception e)
{ }