【问题标题】:XElement parsing from XDocument, far below, repeated 3XElement 从 XDocument 解析,远在下面,重复 3
【发布时间】:2017-11-03 06:38:54
【问题描述】:
//      <sdl:seg id="1" conf="Translated">
//              <sdl:previous origin="source">
//                      <sdl:value key="created">Quick</sdl:value>
//                      <sdl:value key="modified">Brown</sdl:value></sdl:previous>
//              <sdl:value key="created">Fox</sdl:value>
//              <sdl:value key="modified">Jumps</sdl:value></sdl:seg>             

foreach (XElement x in myDoc.Descendants(ns + "seg"))           
    foreach (XElement y in myDoc.Descendants(ns + "value"))
        foreach (var z in y.Attributes())
            if (z.Value == "modified")      
                MessageBox.Show(y.Value);

我有“布朗”和“跳跃”。

我只想有“跳跃”。 (我的意思是只有孩子不是孙子)

请帮忙。

目前,我只研究“foreach”循环而不是 LINQ(我知道那很好)。

问候。

[编辑] 这个怎么样。它什么也不发射。

foreach (var x in d.Descendants("seg").Elements("value").Attributes().Some("modified")
    MessageBox.Show(x.Value);

[编辑 2]

foreach (var x in d.Descendants("seg").Elements("value").Attributes().Where(x => x.Value == "modified"))
MessageBox.Show( x.Parent.Value);

[编辑 3]

foreach (var x in d.Descendants("seg").Elements("value").Where(x => x.Attribute("key").Value == "modified"))
MessageBox.Show(x.Value);

【问题讨论】:

  • 这样你得到属性,而不是元素。
  • 是的……我找到了。虽然和LINQ混在一起,但主要是foreach...
  • 啊。再次感谢评论。
  • 是的,这是一种 linq 方式。不过有点丑吧?
  • 我改变了一点.... 是的。我同意你的看法。没那么漂亮。

标签: c# xml foreach


【解决方案1】:

使用Elements 代替Descendants

foreach (XElement x in myDoc.Descendants(ns + "seg").Elements(ns + "value"))           
    foreach (var z in x.Attributes())
        if (z.Value == "modified")      
            MessageBox.Show(x.Value);

更短的版本:

foreach (XElement x in myDoc.Descendants(ns + "seg").Elements(ns + "value"))
    if (x.Attributes().Any(a => a.Value == "modified"))
        MessageBox.Show(x.Value);

【讨论】:

  • 天哪,这太容易了。
  • 谢谢。我是个编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-07
  • 1970-01-01
相关资源
最近更新 更多