2011-09-26 40 views
1

我有一個XML(稱爲XDOC)文件類似如下:的XDocument空引用空

<Root> 
<ItemContainer> 
<Item> 
<Item> 
<Item> 
<Item> 
</ItemContainer> 
</Root> 

,如果我做了以下

XElement xel = xdoc.Element("ItemContainer"); 

據我瞭解,我應該返回對我的ItemContainer節點元素的引用,但我一直收到null。香港專業教育學院讀MSDN文檔此

「獲取第一個(按文檔順序)與指定 的XName子元素。」

,據我所看到的,ItemContainer是第一個子元素與指定的名稱。我錯過了什麼?

+0

'xdoc'不是'null'嗎?確保'xdoc'已經加載......你如何填充'xdoc'? – Willem

+0

'XDocument xdoc = XDocument.Load(@「c:\ projects \ gen \ test_xml.xml」);'我在xdoc上放置了一個斷點,並且所有的東西都按預期加載了 – richzilla

回答

4

做:

XElement xel = xdoc.Root.Element("ItemContainer"); 

因爲,<Root>也被處理。

XElement xel = xdoc.Element("Root").Element("ItemContainer"); 

也應努力

1

我認爲xdocXDocument類型。文檔的唯一子元素是根節點<Root>
正因爲如此,你的代碼應該是這樣的:

XElement xel = xdoc.Root.Element("ItemContainer"); 
1

你試過......

xdoc.Root.Element("ItemContainer"); 

的根元素是第一要素

1

正如其他人解釋,唯一的孩子的XDocument是根元素,所以要獲得根的孩子,你必須通過根:

XElement xel = xdoc.Root.Element("ItemContainer"); 

或者,如果您不需要訪問XML聲明之類的東西,則可以使用XElement.Load()。它直接返回根元素:

XElement root = XElement.Load(@"c:\projects\gen\test_xml.xml"); 
XElement xel = root.Element("ItemContainer");