我正在使用由嵌套级别获得报酬的人设计的XML.不同的xml文件总是如下所示:
使用LINQ很容易得到我想要的东西:(不完全是,但你明白了)
from x in car.Descendants("x") from y in x.Descendants("y") from z in y.Descendants("z") select z.WhatIWant();
我问是否有更好的方法来做到这一点?用Linq导航DOM的一些方法?
如果你确定你想要的只是TheImporantData
元素中的Car
元素而TheImportantData
不是用作标记名,那么: -
来自x中的car.Descendants("TheImportantData")选择x.WhatIWant();
会做.
考虑XNode
扩展方法XPathSelectElements
.在你的情况下:
var foo = from x in car.XPathSelectElements("Color/Paint/AnotherUselessTag/SomeSemanticBs/TheImportantData") select x.WhatIWant();
与Descendants
方法不同,以这种方式使用XPath专门导航到您需要的元素 - 例如,它只会查看Color
元素下的Car
元素,而只会查看Paint
元素下的Color
元素,依此类推.(如果需要,可以Descendants
使用XPath模式模拟方法的区别性较小的行为.//TheImportantData
.)