c# - 使用 LINQ to XML 按元素属性过滤文档

标签 c# linq-to-xml

我有这个 XML 文档:

<?xml version="1.0" encoding="UTF-8"?>
<teryt>
<catalog name="TERC" type="all" date="2010-01-01">
<row>
  <field name="Woj">1</field>
  <field name="City">Warszawa</field>
  <field name="Name">Mazowsze</field>
</row>
<row>
  <field name="WojId">1</field>
  <field name="City"/>
  <field name="Name">Mazowsze</field>
</row>
<row>
  <field name="Woj">2</field>
  <field name="City"/>
  <field name="Name">Slask</field>
</row>
</catalog>
</teryt>

现在我只想获取在具有属性 City 的字段中没有值的行(使用 LINQ to XML)。

最佳答案

你的意思是:

var rows = from row in doc.Root.Elements("rows")
           where !row.Elements("field")
                     .Any(x => (string) x.Attribute("name") == "City"
                               && x.Value != "")
           select row;

也就是说,“查找所有不包含任何非空 field 元素且 name 属性为 City 的行”。我认为这就是你想要的......

关于c# - 使用 LINQ to XML 按元素属性过滤文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4923352/

相关文章:

linq-to-xml - 保存时排除 xml 声明

xml - 银光 3 : Converting XML stroke collection back into a strokecollection?

c# - 检查 XElement 是否全局为 null

c# - 如何从 NUnit 测试中启动控制台

c# - 如何将按钮附加到数据网格的末尾? (WPF, C#)

c# - 静态属性赋值后为空

c# - 如何使用 XmlWriter 将 System.Xml.Linq.XElement 写入流

c# - MS 图表比例 View 和线程

c# - SqlBulkCopy 抛出 "Operation is not valid due to the current state of the object"

c# - XXE:使用 XDocument 对 XML 外部实体引用的不当限制