Recently i came across a requirement where i was supposed to read a XML file. But this time the requirement was to read the values from XML file which were declared as Attributes in XML node as opposed to XML node child elements.
In today's example i will be sharing the solution with the use of LINQ in C# for achieving the same results with a sample xml.
Customers.xml
Requirement 3: Retrieving all the customers details as Attribute value whose details match the city="Sydney" and
country ="Australia"
In today's example i will be sharing the solution with the use of LINQ in C# for achieving the same results with a sample xml.
Customers.xml
<?xml version="1.0" encoding="utf-8" ?>
<Customers>
<customer
name="Steve John" Id="CUST0001" location="New
York " country="United States " DOB="12/23/1960" Phone="+1 212 666 1111" />
<customer
name="Sagar Mehta" Id="CUST0106" location="Bangalore " country="India " DOB="07/23/1978" Phone="+91 80 8888 1001" />
<customer
name="Rahul Raj" Id="CUST0190" location="Delhi" country="India" DOB="01/31/1980" Phone="+91 11 6666 1111" />
<customer
name="John Roderix" Id="CUST0301" location="Sydney" country="Australia" DOB="02/13/1956" Phone="+61 (0)2 8062 3999" />
</Customers>
Loading the customers xml into the XDocument object:
XDocument xDoc = XDocument.Load(AppDomain.CurrentDomain.BaseDirectory+ "/Customers.xml");
Requirement 1: Retrieving all the customers details in Attributes Name,value format whose details match the city="Bangalore"
IEnumerable<XElement> rows = from row in
xDoc.Descendants("customer")
where (string)row.Attribute("country") == "India "
select row;
//looping through the
XElement details one by one
foreach
(XElement ele in
rows)
{
//for the current xElement retrieving all the Attributes details
IEnumerable<XAttribute> attList =
from
att in ele.DescendantsAndSelf().Attributes()
select att;
//Looping through attributes list and displaying it on the screen
foreach
(XAttribute att in
attList)
{
Console.WriteLine(att);
}
//Just to show a separator between two customer details
Console.WriteLine("---First customer details ends here ----");
}
Requirement 2: Retrieving all the customers details in Attributes Name,value format whose details match the city="Bangalore" and country ="India"
IEnumerable<XElement> rows =
from row in xDoc.Descendants("customer")
from row in xDoc.Descendants("customer")
where (string)row.Attribute("country") == "India " &
(string)row.Attribute("city")
== "Bangalore "
select row;
//looping
through the XElement details one by one
foreach
(XElement ele in
rows)
{
//for
the current XElement retrieving all the Attributes details
IEnumerable<XAttribute> attList =
from
att in ele.DescendantsAndSelf().Attributes()
select att;
//Looping
through attributes list and displaying it on the screen
foreach
(XAttribute att in
attList)
{
Console.WriteLine(att);
}
}
}
IEnumerable<XElement> rows =
from row in xDoc.Descendants("customer")
from row in xDoc.Descendants("customer")
where (string)row.Attribute("country") == "Australia "
& (string)row.Attribute("city")
== "Sydney "
select row;
//looping
through the XElement details one by one
foreach
(XElement ele in
rows)
{
//for
the current XElement retrieving all the Attributes details
IEnumerable<XAttribute> attList =
from
att in ele.DescendantsAndSelf().Attributes()
select att;
//Looping
through attributes list and displaying it on the screen
foreach
(XAttribute att in
attList)
{
//retrieving
the attribute value
Console.WriteLine(att.Value);
}
}
I have used Console.Write for writing the output to demonstrate the output retrieved. You can use any way the data is required to be displayed or stored in a collection.
Happy Coding.........
Given so much information in it. its very useful .perfect explanation about Dot net framework.Thanks for your valuable information. Dot Net Training in chennai | dot net training institute in velachery
ReplyDeleteIt is really a great work and the way in which u r sharing the knowledge is excellent.
ReplyDeleteThanks for helping me to understand basic concepts. As a beginner in Dot Net programming your post help me a lot.Thanks for your informative article.. dot net training in chennai | best dot net training in chennai
It 's an amazing article and useful for developers
ReplyDelete.Net Online Training Bangalore
Appreciating the persistence you put into your blog and detailed information you provide.
ReplyDeleteAws training chennai | AWS course in chennai
Rpa training in chennai | RPA training course chennai
oracle training chennai | oracle training in chennai
php training in chennai | php course in chennai
Great post very useful info thanks for this post ....
ReplyDeleteAws training chennai | AWS course in chennai
Rpa training in chennai | RPA training course chennai
Data science online training