元素(名称)返回null
问题描述:
我有这样的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
是我需要的元素。
我在这里错过了什么?
答
您需要包括命名空间来获取元素:
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
你试过RHE'后裔() '方法? –
顺便说一句 - 那个XML是无效的,你最后缺少'?',即' – rbm