如何获得具有特定属性的所有后代 - Linq到Xml

时间:2017-09-27 16:59:30

标签: c# linq-to-xml

<Grid>
   <StringColumn Header="Name"/>
   <DateColumn Header="Date"/>
</Grid>

这个问题可能已有答案,但我似乎找不到它。

我需要找到所有属性为“Header”的xml元素

元素的名称可以不同。

如何使用Linq to XML做到这一点?

4 个答案:

答案 0 :(得分:3)

这应该为您提供所需的元素:

XDocument document = ...;
var elementsWithHeader = document.Descendants()
                                 .Where(e => e.Attributes().Any(a => a.Name == "Header"));

答案 1 :(得分:0)

这样的事情应该有效:

IEnumerable<XElement> elements =  
    from el in root.Elements("Grid")  
    where (string) el.Attribute("Header") != null  
    select el; 

答案 2 :(得分:0)

使用此:

var grid = XElement.Parse(@"<Grid>
   <StringColumn Header=""Name""/>
   <DateColumn Header=""Date""/>
</Grid>");

var elements = grid.XPathSelectElements(".//*[@Header]");

答案 3 :(得分:0)

使用xml linq。代码打印任何具有子标题属性的网格元素。

<?php 
    if(isset($_POST['skills'])){
      $value1=$_POST['skills'][0];
      $value2=$_POST['skills'][1];
     }
 ?>