C# 解析层次xml
我想知道如何解析此XML:C# 解析层次xml,c#,xml,C#,Xml,我想知道如何解析此XML: <MenuItems> <MenuItem Id="2" Name="Country"> <MenuItem Id="2272" Name="Europe"> <MenuItem Id="888" Name="Austria"/> </MenuItem> <MenuItem Id="2572" Name="Asia"> <MenuItem Id="
<MenuItems>
<MenuItem Id="2" Name="Country">
<MenuItem Id="2272" Name="Europe">
<MenuItem Id="888" Name="Austria"/>
</MenuItem>
<MenuItem Id="2572" Name="Asia">
<MenuItem Id="2572" Name="Japan"/>
</MenuItem>
</MenuItem>
<MenuItem Id="3" Name="Car">
<MenuItem Id="231" Name="Diesel">
<MenuItem Id="387" Name="Toyota">
<MenuItem Id="387" Name="Avensis"/>
</MenuItem>
</MenuItem>
</MenuItem>
</MenuItems>
大概是这样的:
using System.Xml.Linq;
using System.Xml.XPath;
. . .
void PrintMenu(XElement menuElement, string prefix)
{
string newPrefix = prefix + "-";
foreach (XElement subMenuElement in menuElement.XPathSelectElements("MenuItem")) {
Console.WriteLine(prefix+(string)subMenuElement.Attribute("Name"));
PrintMenu(subMenuElement, newPrefix);
}
}
. . .
XElement doc = XElement.Parse(DataXml);
PrintMenu(doc, String.Empty);
这实际上是两个问题: 这两者都是微不足道的,在其他地方也有充分的解释
using System.Xml.Linq;
using System.Xml.XPath;
. . .
void PrintMenu(XElement menuElement, string prefix)
{
string newPrefix = prefix + "-";
foreach (XElement subMenuElement in menuElement.XPathSelectElements("MenuItem")) {
Console.WriteLine(prefix+(string)subMenuElement.Attribute("Name"));
PrintMenu(subMenuElement, newPrefix);
}
}
. . .
XElement doc = XElement.Parse(DataXml);
PrintMenu(doc, String.Empty);