【发布时间】:2020-12-07 10:48:17
【问题描述】:
我正在尝试根据特定属性的存在来获取所有后代 XElement,包括 XElement 的根元素。我不是很好的尝试:
var myXElements = form.FormData.Descendants().Where(e => e.Attributes().Where(a => a.Name == myProperty).Count() > 0).ToList();
// Extra for root element
if (form.FormData.Attribute(myProperty) != null)
{
myXElements.Add(form.FormData);
}
其中 form.FormData 是 XElement 类型(我从 .dll 中接收),而 myProperty 是特定属性。
有没有更优雅的方法来实现这一点?
【问题讨论】:
-
你不需要得到所有的后代。获取父节点自动获取整棵树。
-
@jdweng 请演示如何帮助将起始 XML
<parent a="1"><child1><child2 a="2"/></child1></parent>减少为两个 XElements{ <parent a="1"/>, <child2 a="2" />}的列表。 -
需要的是下面的根元素:form.FormData.D.Descendants("Element Name")
-
@jdweng 这将为您提供标签名称为“元素名称”的所有元素的列表。 OP 想要一个后代元素的列表,无论它们的名称如何,它们都有特定的属性。
-
@GSerg : XElement 将包括后代。