0

我有如下的决策树结构,

<?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 

即,根值加上树的第一级子级值。再次选择特定项目,例如 Sunny

它必须迭代地给出其连续的根值和根的第一级子级。那是 ,

Humidity : High , Normal

最后做出决定,是或否。我正在做同样的事情,但一些输入会进一步帮助我。

4

1 回答 1

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 控制台。希望这可以帮助。

于 2013-03-30T12:07:34.257 回答