XElement.Root.Element一直返回null
本文关键字:返回 null 一直 Element Root XElement | 更新日期: 2023-09-27 18:26:50
我正在学习C#,并试图在发布后的代码后面展开XML
var doc = XDocument.Load("test.xml");
XNamespace ns = "mynamespace";
var member = doc.Root.Element(ns + "member");
// This will *sort* of flatten, but create copies...
var descendants = member.Descendants().ToList();
// So we need to strip child elements from everywhere...
// (but only elements, not text nodes). The ToList() call
// materializes the query, so we're not removing while we're iterating.
foreach (var nested in descendants.Elements().ToList())
{
nested.Remove();
}
member.ReplaceNodes(descendants);
这是我的XML(抱歉,我不知道如何发布花哨的代码风格)
<ApplicationExtraction>
<IsCurrent>Yes</IsCurrent>
<ApplicationDate>10/06/2015</ApplicationDate>
<Status>Application Received</Status>
<EquipmentType>Equipment</EquipmentType>
<IsLoan>No</IsLoan>
</ApplicationExtraction>
有名称空间,所以我将var member = doc.Root.Element(ns + "member");
更改为var member = doc.Root.Element("ApplicationExtraction");
,但返回NULL。
我也尝试了XElement sRoot = doc.Root.Element("ApplicationExtraction");
从这个帖子我仍然得到相同的结果。
我读了Microsoft XElement文档,但不知道如何解决这个问题。
我可能做错了什么?
XElement sRoot = doc.Root.Element("ApplicationExtraction");
将在根目录中查找元素"ApplicationExtraction"。如果你想要根,只需参考
doc.Root
在您的XML中,doc.Root
是根节点,即ApplicationExtraction
,而根节点内没有节点ApplicationExtraction
,因此您将获得null。
要获取您需要的任何特定节点(例如):-
XElement member = doc.Root.Element("IsCurrent");
并获取节点内部的值:-
string member = (string)doc.Root.Element("IsCurrent");