<cat>
    <records>
        <item>
            <id>1</id>
            <name>test</name>
            <value>xxxbbb</value>
        </item>
        <item>
            <id>2</id>
            <name>test</name>
            <value>xxxbbb</value>
        </item>
        <item>
            <id>3</id>
            <name>test</name>
            <value>xxxbbb</value>
        </item>
        <item>
            <id>4</id>
            <name>test1</name>
            <value>xxxbbb</value>
        </item>
        <item>
            <id>5</id>
            <name>test2</name>
            <value>xxxbbb</value>
        </item>
    </records>
</cat>用xml.linq怎么查询name为test的所有节点,
并取出所有节点的值,绑定到dataGridview
XElement data = XElement.Load(path);
                var query = from x in data.Descendants("records")
                            from item in x.Elements("item")
                            select new
                            {
                                domain_id=item.Element("id").Value,
                                name=item.Element("name").Value,
                                value=item.Element("value").Value
                            };
                dataGridView1.DataSource = query.ToList();
在这个基础上要怎么改进?

解决方案 »

  1.   

                string path = @"F:\xml.xml";
                XElement element = XElement.Load(path);
                var xml = from e in element.Descendants("item") where e.Element("name").Value=="test" select e;
                foreach (var x in xml)
                    Console.WriteLine("id:{0} name:{1} value:{2}", x.Element("id").Value, x.Element("name").Value, x.Element("value").Value);
                Console.WriteLine();
                Console.ReadLine();
      

  2.   

    var xdoc = XDocument.Load(path);
    var query = from item in xdoc.Descendants("item")
                where item.Element("name").First().Value == "test"
                select new
                       {
                         domain_id=item.Element("id").Value,
                         name=item.Element("name").Value,
                         value=item.Element("value").Value
                        };
      

  3.   

    item.Element("name").First().Value == "test"
      

  4.   

    嗯,多谢,刚才看了下MSDN.找到了方法,和上面一样