嗨,我剛剛在幾天前着手LINQ-XML,想知道我是否做錯了什麼,或者只是不可能做到這一點。我四處搜尋,沒有發現任何與我有關的問題,現在我一直在瞎搞。用linq選擇子元素
XML:
<catalog>
<product description="Cardigan Sweater" product_image="cardigan.jpg">
<catalog_item gender="Men's">
<item_number>QWZ5671</item_number>
<price>39.95</price>
<size description="Medium">
<color_swatch image="red_cardigan.jpg">Red</color_swatch>
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
</size>
<size description="Large">
<color_swatch image="red_cardigan.jpg">Red</color_swatch>
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
</size>
</catalog_item>
<catalog_item gender="Women's">
<item_number>RRX9856</item_number>
<price>42.50</price>
<size description="Small">
<color_swatch image="red_cardigan.jpg">Red</color_swatch>
<color_swatch image="navy_cardigan.jpg">Navy</color_swatch>
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
</size>
<size description="Medium">
<color_swatch image="red_cardigan.jpg">Red</color_swatch>
<color_swatch image="navy_cardigan.jpg">Navy</color_swatch>
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
<color_swatch image="black_cardigan.jpg">Black</color_swatch>
</size>
<size description="Large">
<color_swatch image="navy_cardigan.jpg">Navy</color_swatch>
<color_swatch image="black_cardigan.jpg">Black</color_swatch>
</size>
<size description="Extra Large">
<color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch>
<color_swatch image="black_cardigan.jpg">Black</color_swatch>
</size>
</catalog_item>
和查詢:
var query =
from size in
(
from catalogItem in cardigan.Descendants("catalog_item")
where catalogItem.Attribute("gender").Value == "Men's"
select catalogItem.Descendants("size")
)
select size.Elements("color_swatch");
,基本上讓我全部爲男性的color_swatch,但我一直在努力,看看我是否能得到所有color_swatch男士大號只有。
在此先感謝。
您的意思是'size.Attribute',而不是'size.Attributes'。 – cdhowie 2010-11-17 22:50:15
謝謝,修正了輸入錯誤 – 2010-11-17 22:50:45
看到的問題是,尺寸是IEnumerable不是XElement,所以它沒有Attribute的定義。我已經試過這:( –
David
2010-11-17 22:53:54