#linq-to-xml
#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:
Основываясь на предоставленной вами информации, я думаю, 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);
}
он красиво выводит идентификатор всех трех элементов:
m1
m2
m3
Если у вас все еще есть проблемы с кодом, который не выполняет то, что вы хотите, тогда подумайте о том, чтобы показать нам достаточно этого кода, чтобы мы могли воспроизвести проблему.