i tried to read nested XML with xmlnode but i got one issue
here is my xml file
<role name="admin">
<menu name="Setting">
<group name="settinggrup1"></group>
<group name="settinggrup2"></group>
<group name="settinggrup3"></group>
</menu>
<menu name="Service">
<group name="servicegrup1"></group>
<group name="servicegrup2"></group>
<group name="servicegrup3"></group>
</menu>
<menu name="Search">
<group name="serchgrup1"></group>
<group name="serchgrup2"></group>
<group name="serchgrup3"></group>
</menu>
</role>
and here is my code
var xmlDoc = new XmlDocument();
xmlDoc.Load(file);
XmlNodeList nodeList = xmlDoc.SelectNodes("//role[@name='" + "admin" + "']/menu");
var menus = new List<Menu>();
var groupName = new List<Group>();
Menu menu = new Menu();
foreach (XmlNode menuNode in nodeList)
{
menu.name = menuNode.Attributes["name"].Value;
foreach (XmlNode childNode in menuNode)
{
groupName.Add(new Group() { name = childNode.Attributes["name"].Value });
}
menus.Add(new Menu { name = menu.name, group = groupName });
}
here is my class
public class Menu
{
public string name { get; set; }
public List<Group> group { get; set; }
}
public class Group
{
public string name { set; get; }
}
And by that, i intended to display like
- Setting : settinggrup1, settinggrup2, settinggrup3
- Service : servicegrup1, servicegrup2, servicegrup3
- Search : searchgrup1, searchgrup2, searchgrup3
But what i got is this
- Setting : settinggrup1, settinggrup2, settinggrup3, servicegrup1, servicegrup2, servicegrup3, searchgrup1, searchgrup2, searchgrup3
- Service : settinggrup1, settinggrup2, settinggrup3, servicegrup1, servicegrup2, servicegrup3, searchgrup1, searchgrup2, searchgrup3
- Search : settinggrup1, settinggrup2, settinggrup3, servicegrup1, servicegrup2, servicegrup3, searchgrup1, searchgrup2, searchgrup3
Something wrong in my code part, i guess at the part when i added list at my nested foreach, but i've been trying for hours and still can't fix it. anyone can help me please, and also, please explain what my code did wrong.