C# XDocument的XElement解析,远低于,重复3次
[编辑2]C# XDocument的XElement解析,远低于,重复3次,c#,xml,foreach,C#,Xml,Foreach,[编辑2] foreach (var x in d.Descendants("seg").Elements("value").Attributes().Some("modified") MessageBox.Show(x.Value); [编辑3] foreach (var x in d.Descendants("seg").Elements("value").Attributes().Where(x => x.Value == "modified")) MessageBox.S
foreach (var x in d.Descendants("seg").Elements("value").Attributes().Some("modified")
MessageBox.Show(x.Value);
[编辑3]
foreach (var x in d.Descendants("seg").Elements("value").Attributes().Where(x => x.Value == "modified"))
MessageBox.Show( x.Parent.Value);
使用
元素
而不是子体
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);
哦,天哪,那太简单了。谢谢。我是一个ediot。这样你可以得到属性,但不能得到元素。耶。。。我找到了。虽然它和LINQ混在一起,但主要是foreach…啊。再次感谢您的评论。是的,这是一种灵巧的方式。但是有点难看,嗯?我变了一点。。。。对我同意你的看法。不太漂亮。
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);