【发布时间】:2016-03-05 22:35:14
【问题描述】:
我有以下 xml 文件
<Universe id="123nebula" name="winterfell" parentId="0">
<planet id="gio234" name="bobka grantos">
<planet id="tyu88" name="viola winter" description="dgdgdddgddgdddgd"/>
</planet>
<planet id="huio90" name="bintor nardi" description="dedededddddddddd"/>
<planet id="ruil99" name="torian fartknox" description="llllklklklkkllk"/>
<planet id="huy7777" name="vivalid durol" description="ppppppppppssssss"/>
<planet id="fila7866" name="hella fella dorrrah">
<planet id="asaaa23" name="Sixty two nine pine" description="ffffffffdfdfd"/>
<planet id="tyu88" name="viola winter" description="dgdgdddgddgdddgd"/>
<planet id="juiiko8" name="tae bo" description="jujujioooppoiiu"/>
</planet>
</Universe>
在这里,有些行星是由它们自己存在的,有些行星有子行星。由于所有父行星和子行星都具有相同的元素名称“行星”,因此识别父行星的唯一方法是查找 description attribute,其中只有子(子)行星具有“描述”attribute.
我想做两件事:
- 我需要得到
id = fila7866的父行星的所有子行星 - 我想获取所有没有子行星的行星
更新 这需要使用 LINQ-2-XML 完成!
我该怎么做?
【问题讨论】:
-
不喜欢看起来太老套,但尽管如此 - 您在发布之前实际上尝试过什么?网上有很多关于如何使用 X(ml)Document 的信息,我敢肯定,即使是遍历这样的树,也至少有很少的命中率。如果您有实际问题,请提供一些可以demonstrate it 的代码。
-
@EugenePodskal 它应该使用 LINQ-2-XML 完成,我用它更新了我的帖子
-
我仍然非常确信您应该尝试自己解决这个问题。但那是你自己的事……
-
@EugenePodskal 我知道如何获取元素,如果它们有多种和特定的 xpath 模式,但在这种情况下,除了根元素之外所有元素都具有相同的名称。我相信这是独一无二的
-
但是您是否尝试过使用某些 xpath,假设这些元素不是唯一的?我可以向您保证,使用完全限定的 xpath,节点的命名方式没有区别。它们都可以具有相同的名称 - 这实际上并不重要。
标签: c# xml linq asp.net-mvc-4 linq-to-xml