0

我想知道如何解析这个 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>

并将以下内容写入控制台:

国家-欧洲-- 奥地利- 亚洲 -- 日本汽车 -柴油机 --丰田 汽车
--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);
}
4

2 回答 2

0

这真的是两个问题:

  1. 如何解析 XML?

  2. 如何遍历列表的递归列表?

两者都是微不足道的,并且在其他地方得到了充分的解释。

于 2012-09-25T06:45:20.927 回答
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);
于 2012-09-06T23:10:34.443 回答