как читать родительский xml, присваивая дочернее значение в .net

#c#

#c#

Вопрос:

xml:

 <PrimaryLink>
  <LinkID>p1</LinkID>
    <SecondaryLink>
      <LinkID>s1</LinkID>      
        <LeftMenu>
          <NavLinks>
            <LinkID>n1</LinkID>
          </NavLinks>
          <NavLinks>
            <LinkID>n2 </LinkID>               
          </NavLinks>
        </LeftMenu>
    </SecondaryLink>  
</PrimaryLink>
  

c#:

 var menuItems1 = from c in xMenuElement.Elements("GlobalNavigation").Elements("PrimaryLink")
                 select c;
  

я понимаю, что ответчикам нравится p1-> s1-> n1, предоставляя n1 в качестве входных данных

Ответ №1:

Ваш вопрос довольно неясен, но я думаю, что вы хотите что-то вроде:

 var query = xml.Descendants("LinkID")
               .Where(x => (string) x == "n1")
               .Single()
               .AncestorsAndSelf("LinkID")
               .Reverse()
               .Select(x => (string) x);
  

Это вернет последовательность «p1», «s1» и «n1».

Комментарии:

1. Вы можете использовать этот метод AncestorsAndSelf() вместо Ancestors() для включения последнего идентификатора ссылки.

2. @Elian: Я искал это, но не увидел. Похоже, я искал не тот класс, чтобы найти его — Ancestors находится в XNode, AncestorsAndSelf — в XElement.