'How to retrieve tags inside certain tag for XML using GetElementsByTagName/SelectNode/SelectSingleNode?
Let say I have a XML with this format:
<TEST>
<DRINK>
<NAME>Ice tea</NAME>
<NAME>Milo</NAME>
<NAME>Coffee</NAME>
</DRINK>
<FOOD>
<NAME>Fried Rice</NAME>
<NAME>Hamburger</NAME>
<NAME>Fried Noodles</NAME>
</FOOD>
</TEST>
How to retrieve only food names and put them in the ASP.NET web form textbox?
This is my current code:
XmlDocument doc = new XmlDocument();
doc.Load(filepath);
root = doc.DocumentElement;
TextBox1.Text = root.GetElementsByTagName("NAME")[0].InnerText;
TextBox2.Text = root.GetElementsByTagName("NAME")[1].InnerText;
TextBox3.Text = root.GetElementsByTagName("NAME")[2].InnerText;
This code will instead retrieve drink names instead of food names. How to make it read NAME tags in FOOD tag?
Solution 1:[1]
By using XmlNode.SelectNodes Method with providing the XPath.
var foodElements = root.SelectNodes("FOOD/NAME");
Console.WriteLine(foodElement[0].InnerText);
Console.WriteLine(foodElement[1].InnerText);
Console.WriteLine(foodElement[2].InnerText);
Solution 2:[2]
Basic xml parsing.
this:
{
string sXML
=
@"<TEST>
<DRINK>
<NAME>Ice tea</NAME >
<NAME>Milo</NAME >
<NAME>Coffee</NAME>
</DRINK>
<FOOD>
<NAME>Fried Rice</NAME>
<NAME>Hamburger</NAME>
<NAME>Fried Noodles</NAME>
</FOOD>
</TEST>";
XmlDocument myXml = new XmlDocument();
myXml.LoadXml(sXML);
XmlNodeList myNodes = myXml.SelectNodes("TEST/FOOD/NAME");
foreach (XmlNode OneNode in myNodes)
{
Debug.Print(OneNode.InnerText);
}
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | Albert D. Kallal |

