gpt4 book ai didi

c# - XElement 从 XDocument 解析,远在下面,重复 3

转载 作者:行者123 更新时间:2023-11-30 23:12:08 26 4
gpt4 key购买 nike

//      <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);

我有“棕色”和“跳跃”。

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

请帮忙。

目前,我只研究“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);

最佳答案

使用元素代替后代

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);

关于c# - XElement 从 XDocument 解析,远在下面,重复 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44318966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com