<?xml version="1.0" encoding="UTF-8"?>
-<cat> -<status> <code>1</code> <message>Get domain list success.</message> <created_at>2011-08-07 01:46:03</created_at> </status> -<info> <domain_total>3</domain_total> </info> -<domains> -<item> <id>240481</id> <name>xx1.com</name> <grade>D_Free</grade> <status>enable</status> -<ext_status>
<![CDATA[]]>
</ext_status> <records>13</records> <updated_on>2011-06-21 13:17:25</updated_on> </item> -<item> <id>397274</id> <name>xx2.com</name> <grade>D_Free</grade> <status>enable</status> -<ext_status>
<![CDATA[]]>
</ext_status> <records>18</records> <updated_on>2011-06-21 13:43:17</updated_on> </item> -<item> <id>240340</id> <name>xx3.com</name> <grade>D_Free</grade> <status>enable</status> -<ext_status>
<![CDATA[]]>
</ext_status> <records>189</records> <updated_on>2011-08-06 20:21:24</updated_on> </item> </domains> </cat>
我需要domains下的三条item的子节点,包括下面的属性值
这个用dataset好像无法实现?这有三级子节点了.

解决方案 »

  1.   

    -<cat> -<status> 这不对吧。。
      

  2.   


    void Main()
    {
    string xml=@"<?xml version=""1.0"" encoding=""UTF-8""?>
    <cat> <status> <code>1</code> <message>Get domain list success.</message> <created_at>2011-08-07 01:46:03</created_at> </status> -<info> <domain_total>3</domain_total> </info> -<domains> -<item> <id>240481</id> <name>xx1.com</name> <grade>D_Free</grade> <status>enable</status> -<ext_status>
    <![CDATA[]]>
    </ext_status> <records>13</records> <updated_on>2011-06-21 13:17:25</updated_on> </item> -<item> <id>397274</id> <name>xx2.com</name> <grade>D_Free</grade> <status>enable</status> -<ext_status>
    <![CDATA[]]>
    </ext_status> <records>18</records> <updated_on>2011-06-21 13:43:17</updated_on> </item> -<item> <id>240340</id> <name>xx3.com</name> <grade>D_Free</grade> <status>enable</status> -<ext_status>
    <![CDATA[]]>
    </ext_status> <records>189</records> <updated_on>2011-08-06 20:21:24</updated_on> </item> </domains> </cat>";
       DataSet ds=new DataSet();
       XElement data=XElement.Parse(xml);
       var query=from x in data.Descendants("domains")
                  from item in x.Elements("item")
                  select new
      {
         id=item.Element("id").Value,
     name=item.Element("name").Value,
     //下边的以此类推,自己添加,你懂的
      };
    Console.WriteLine(query);
    }
      

  3.   

     DataSet ds=new DataSet(); 这句可以删除掉
      

  4.   

            string xml = @"<?xml version='1.0' encoding='utf-8'?> <cat>
        <status>
            <code>1</code>
            <message>Get domain list success.</message>
            <created_at>2011-08-07 01:46:03</created_at>
        </status> <info>
            <domain_total>3</domain_total>
        </info> <domains>
            <item>
                <id>240481</id> <name>xx1.com</name> <grade>D_Free</grade> <status>enable</status> <ext_status> <![CDATA[]]> </ext_status> <records>13</records> <updated_on>2011-06-21 13:17:25</updated_on>
            </item> <item>
                <id>397274</id> <name>xx2.com</name> <grade>D_Free</grade> <status>enable</status> <ext_status> <![CDATA[]]> </ext_status> <records>18</records> <updated_on>2011-06-21 13:43:17</updated_on>
            </item> <item>
                <id>240340</id> <name>xx3.com</name> <grade>D_Free</grade> <status>enable</status> <ext_status> <![CDATA[]]> </ext_status> <records>189</records> <updated_on>2011-08-06 20:21:24</updated_on>
            </item>
        </domains>
    </cat>";
            XmlDocument dom = new XmlDocument();
            dom.LoadXml(xml);        XmlNodeList list = dom.SelectNodes(@"/cat/domains/item/child::*/child::text()");
            
            for (int i = 0; i < list.Count; i++)
            {
                Response.Write(list[i].OuterXml);
            }
      

  5.   


    OuterXml
    这个关键字好像找不到,用你上面的语句,
    winform
      

  6.   


    更正下这个XElement data = XElement.Load(path);
                        var query = from x in data.Descendants("domains")
                                    from item in x.Elements("item")
                                    select new
                                    {
                                        id=item.Element("id").Value,
                                        name=item.Element("name").Value                                };
                        foreach (var item in query)
                        {
                            MessageBox.Show(item.id);
                            MessageBox.Show(item.name);
                        }这样才正确
    XElement.Parse(strig ..)这里能只能是xml格式的字符串吧?你声明了string xml,是对的.接路径只能
    XElement.Load(string path)不过 Console.WriteLine(query);
    这个有点不太明白,能直接这样显示出来么?
      

  7.   

    Console.WriteLine(query);
    这不是在VS内写的代码
    是在一个小工具内写的测试代码 在这个工具内可以直接输出结果