2017-03-07 181 views
1

我有這樣的XML:元素(名稱)返回null

<?xml version="1.0" encoding="utf-8"?> 
<envelope xmlns="myNamespace"> 
    <response code="123" /> 
</envelope> 

,我想選擇<response>元素是這樣的:

XDocument doc = XDocument.Parse(myXmlString); 
XElement response = doc.Root.Element("response"); 

但它返回null。我知道元素在那裏,因爲doc.Root.FirstNode是我需要的元素。

我在這裏錯過了什麼?

+0

你試過RHE'後裔() '方法? –

+0

順便說一句 - 那個XML是無效的,你最後缺少'?',即'<?xml version =「1.0」encoding =「utf-8」?> – rbm

回答

5

您需要包括命名空間來獲取元素:

XDocument doc = XDocument.Parse(myXmlString); 
XNamespace ns = "myNamespace"; 
XElement response = doc.Root.Element(ns + "response"); 

或者,你可以使用LocalName避開使用命名空間:

XDocument doc = XDocument.Parse(xml); 
XElement response = doc.Descendants().First(x => x.Name.LocalName == "response"); 
+1

你也可以使用'XNamespace ns = doc .Root.GetDefaultNamespace()' –

+0

@SergeyBerezovskiy我不知道,謝謝! – Jonesopolis