从xml树中的特定级别检索

时间:2013-03-28 10:03:37

标签: linq xml-parsing linq-to-xml decision-tree

我的决策树结构如下所示,

<?xml version="1.0" encoding="utf-8" ?>
<root>
  outlook
  <item>
    sunny
    <root>
      humidity
      <item>
        high
        <leaf>no</leaf>
      </item>
      <item>
        normal
        <leaf>yes</leaf>
      </item>
    </root>
  </item>
  <item>
    overcast
  <leaf>yes</leaf>
  </item>
  <item>
    rain
    <root>
      wind
      <item>
        weak
        <leaf>yes</leaf>
      </item>
      <item>
        strong
        <leaf>no</leaf>
      </item>
    </root>
  </item>
</root>

我想要一个显示的LINQ查询,

Outlook : Sunny , Overcast , Rain 

也就是说,root值加上树的第一级子级值。再次选择特定项目,如,     晴天

它必须迭代地给出其连续的根值和root的第一级子节点。也就是说,

Humidity : High , Normal

最后到达决定,是或否。 我正在努力,但一些输入将帮助我进一步。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

var doc = XDocument.Parse(xml);
foreach (var r in doc.Descendants("root"))
{
    var values = r.Elements("item").Select(s => (s.FirstNode as XText).Value.Trim()).ToList();
    string.Concat((r.FirstNode as XText).Value.Trim(), ": ", string.Join(",", values)).Dump("decision");
}

这是我得到的输出:

decision 
outlook: sunny,overcast,rain 

decision 
humidity: high,normal 

decision 
wind: weak,strong 

我使用了LinqPad,因此Dump方法调用将输出吐出到LinqPad控制台。希望这会有所帮助。