我想知道如何解析这个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="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>
并将以下内容写入控制台:
国家
- 欧洲
--Austria
- 亚洲
- 日本
汽车
-Diesel
--Toyota
--- AVENSIS
我事先并不知道层次结构中孩子的深度。
我的代码:
XElement doc = XElement.Parse(DataXml);
XElement MenuNode = doc.XPathSelectElement("/MenuItem");
var segmentNodes = MenuNode.XPathSelectElements("/");
foreach (XElement segmentNode in segmentNodes)
{
var segmentAlignment = (string)segmentNode.Attribute("Name");
Console.Writeline(segmentAlignment);
}
答案 0 :(得分:0)
这样的事情:
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);
答案 1 :(得分:0)
这实际上是两个问题:
两者都是微不足道的,并在其他地方得到充分解释。