如何在单个Linq查询中选择XElement元素及其子元素

时间:2011-10-20 06:52:47

标签: linq-to-xml

我需要在一个步骤中选择父级和子级,以便我可以将它们作为IEnumerable并迭代它们

我尝试过parent.descendantsandself但是没有任何想法

<MenuItem id="MyAccount" rmId="MyAccount" loc-attr="MyAccount,text" text="My Account" target="" display="true">
  <MenuItem id="MyProducts" rmId="MyProducts" loc-attr="MyProducts,text" text="My McAfee Products" target="" display="true" href="http://home.mcafee.com/root/myAccount.aspx" />
  <MenuItem id="MyProfile" rmId="MyProfile" loc-attr="MyProfile,text" text="Update McAfee Account Info" target="" display="true" href="https://home.mcafee.com/Secure/Protected/MyAccountInfo.aspx" />
  <MenuItem id="MyArSettings" rmId="MyArSettings" loc-attr="MyArSettings,text" text="My Auto-Renewal Settings" href="https://home.mcafee.com/Secure/Protected/AutoRenew.aspx" target="" display="true" />
</MenuItem>

1 个答案:

答案 0 :(得分:0)

根据您提供的信息,我认为DescendantsAndSelf应该有用,例如当我尝试

            XElement item = XElement.Parse(@"<MenuItem Id=""m1"">
  <MenuItem Id=""m2""></MenuItem>
  <MenuItem Id=""m3""></MenuItem>
</MenuItem>");
            foreach (XElement menu in item.DescendantsAndSelf())
            {
                Console.WriteLine("{0}", menu.Attribute("Id").Value);
            }

很好地输出所有三个元素的id:

m1
m2
m3

如果您仍然遇到代码无法执行您想要的操作的问题,请考虑向我们展示足够的代码,以便我们重现问题。