0
可能重複:
Understanding Linq To Xml - Descendants return no results的LINQ to XML節點選擇預期不起作用
所以我一直在尋找的微軟例如:
http://msdn.microsoft.com/en-us/library/bb387061.aspx
在那裏,他們這樣做:
IEnumerable<string> partNos =
from item in purchaseOrder.Descendants("Item")
select (string) item.Attribute("PartNumber");
他們使用「後代」來處理purchaseOrder中的一個實際上3層深的項目。
現在,當我嘗試用我的XML做同樣的事情時,我什麼也得不到。
我的XML:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<name>Roulette</name>
<modules>
<module>application</module>
<module>test</module>
</modules>
我的代碼:
XDocument mainPOM = XDocument.Load(above_xml);
List<string> pomLocations = (from loc in mainPOM.Descendants("module") select (string)loc.Name.LocalName).ToList();
Console.WriteLine(pomLocations.Count);
不幸的是,pomLocations爲0 :(長度
有人可以告訴我究竟在何處我在搞亂嗎?
嗨,喬恩,謝謝你的回答! :)。其實,我想選擇節點的內部。但那是臨時代碼,只是爲了選擇* something *,任何東西。順便說一句,它不管用。我只是在我現有的代碼中添加ns,長度仍然是0 :: - /。想法?至於後代。我想要它,因爲我實際上正在尋找「模塊」節點。再次,它只是一些測試代碼。我會編輯它。 – Axonn
好吧,現在它工作。我用「模塊」替換了「項目」。看來ns +「project」返回0個項目。 ns +「模塊」返回了預期的2.謝謝。 – Axonn
@Axonn:那麼'mainPOM'是什麼?如果它已經是'project'元素,那就可以解釋它。這是提供一個簡短的但完整的程序來展示程序的幫助 - 你基本上已經離開了我們的猜測。 –