2010-10-28 147 views
2

從XML檢索數據我有XML從我希望得到一些數據問題與LINQ

XDocument loaded = XDocument.Load(@"c:\TERC.xml"); 


     var query = (from c in loaded.Descendants("catalog") 
       from r in c.Descendants("row") 
       select (string)r.Element("Name")); 

這個返回我空的集合

我怎樣才能解決呢?

下面是這個XML:

<?xml version="1.0" encoding="UTF-8" ?> 
<teryt> 
<catalog name="Compix"> 
<row> 
    <col name="NAME">Name1</col> 
    <col name="ID">12</col> 
    </row> 
<row> 
    <col name="NAME">Name2</col> 
    <col name="ID">13</col> 
    </row> 
<row> 
    <col name="NAME">Name3</col> 
    <col name="ID">14</col> 
    </row> 
</catalog> 
</teryt> 

回答

2
List<string> query = (from c in loaded.Descendants("catalog") 
         from r in c.Descendants("row") 
         from col in r.Descendants("col").Where(col1 => 
         col1.Attribute(XName.Get("name")).Value == "NAME") 
         select col.Value).ToList(); 

上面執行的語句之後,query包含以下字符串:

  • Name1
  • Name2
  • Name3
+0

對不起,我爲我的xml添加了非常重要的值。它只是這個大XML的一部分,我對你的瞭解並不那麼重要:/ – user278618 2010-10-28 15:05:45

+0

更新了我的答案,以使用更新的XML。 – Donut 2010-10-28 15:11:06

1

你可以試試這個:

var query = (from c in loaded.Descendants("catalog") 
        from r in c.Descendants("row") 
        select (string)r.Value); 

我假設你想要得到的「關口」節點中的數據。否則,請確定您想要檢索的內容。

希望這會有所幫助。

+0

對不起,我添加了非常重要的值給我的XML。它只是這個大XML的一部分,我不知道這麼重要:/ – user278618 2010-10-28 15:06:05

+0

沒問題,這很正常,我們不在你的代碼中,所以我們不知道這一切。我只希望一些答案對你有幫助。 – Hal 2010-10-28 15:13:44

1

名稱是col元素的屬性,它的你蒼白t值,該部分在查詢中丟失。

 var query = (from c in loaded.Descendants("catalog") 
        from r in c.Descendants("row") 
        from col in r.Descendants("col") 
        select (string)r.Value).ToList<string>(); 
+0

對不起,我爲我的xml添加了非常重要的值。它只是這個大XML的一部分,我不知道這麼重要:/ – user278618 2010-10-28 15:07:04