1

我有一个这样的 xml

<rootnode>

<lvl1>AIT</lvl1>

<lvl2>
<a>0</a>
<b> 111</b> 
</lvl2>

</rootnode>

xml解析代码如下

public class accountlist
        {
            public string lvl1 { get; set; }
            public List<string> b { get; set; }                
        } 

List<accountlist> questions = (from c in xmlDoc.Descendants("rootnode")
                                           select new accountlist
                                        {
                                            lvl1 = c.Element("rootnode").Value,
                                            b = (from q in c.Descendants("lvl2").Elements("b").Elements("a") where q.Element("a").Value == "0"
                                                             select q.Value).ToList(),
                                        }).ToList();

我的输出应该是这样的

lvl1 = AIT
b = 111

请帮我......

4

1 回答 1

1

尝试以下查询。

    var doc = XElement.Parse(@"<rootnode><lvl1>AIT</lvl1><lvl2><a>0</a><b> 111</b> </lvl2></rootnode>");

    var questions = from c in doc.DescendantsAndSelf("rootnode")
                    select new accountlist
                               {
                                   lvl1 = c.Element("lvl1").Value,
                                    b = (from q in c.Descendants("lvl2") where q.Element("a").Value == "0"
                                                     select q.Element("b").Value).ToList()
                               };

看起来您将在结果集中获得 b 列表,如果您需要 lvl1 和 b 的简单值,那么

 var question2 = from c in doc.DescendantsAndSelf("rootnode")
                            select new
                            {
                                lvl1 = c.Element("lvl1").Value,
                                b =  c.Descendants("lvl2").Elements("b").FirstOrDefault().Value
                            };
于 2012-05-28T09:02:39.413 回答