Xelement.Element(string)始终返回null

时间:2015-09-28 15:46:22

标签: c# xml

我有一个看起来像的Xelement:

<headers batchid="123456" xmlns="http://api.temp.com/ns/">
  <header uri="https://api.temp.com/v1.0/headers/147852" id="147852" /> 
  </headers>

我试图阅读&#34; uri&#34;属性。我试过的时候:

var temp = xmlResponse.Attribute("uri");

它一直让我无效。

所以我试过了:

var temp = xmlResponse.Element("header");
var temp2 = xmlResponse.Element("headers");

并且它们也返回null。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您忽略了元素的命名空间。由于xmlns="..."headersheader元素都位于"http://api.temp.com/ns/"的命名空间中。幸运的是,LINQ to XML使这很容易解决:

XNamespace ns = "http://api.temp.com/ns/";
var temp = xmlResponse.Element(ns + "headers");
var temp2 = temp.Element(ns + "header");

(请注意,header元素嵌套在headers元素中,因此我可以调用temp.Element来获取它。)