【问题标题】:Element(name) returns null [duplicate]元素(名称)返回 null [重复]
【发布时间】:2017-03-07 13:48:06
【问题描述】:

我有这个 XML:

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

我想像这样选择&lt;response&gt; 元素:

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

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

我在这里错过了什么?

【问题讨论】:

  • 你试过rheDescendants()方法吗?
  • 顺便说一句 - XML 无效,您最后缺少?,即&lt;?xml version="1.0" encoding="utf-8"?&gt;

标签: c# xml


【解决方案1】:

你需要包含命名空间来获取元素:

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");

【讨论】:

  • 你也可以使用XNamespace ns = doc.Root.GetDefaultNamespace()
  • @SergeyBerezovskiy 我不知道,谢谢!
猜你喜欢
  • 1970-01-01
  • 2016-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-19
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
相关资源
最近更新 更多