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

#c# #xml

#c# #xml

Вопрос:

 <?xml version="1.0" encoding="utf-8" ?>
<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. К сожалению, xml не добавляется .. вот пример xml <?xml version=»1.0″ encoding = «utf-8» ?> <Основная ссылка> <LinkId>p1</LinkId> <SecondaryLink> <LinkId>s1</LinkId> <LeftMenu> <NavLinks> <LinkId>n1</LinkId> </NavLinks> <NavLinks> <linkidid> c<! [CDATA[ ]]> n2 </LinkId> </NavLinks> </LeftMenu> </SecondaryLink> </PrimaryLink>

2. Если вы публикуете образцы кода, XML или данных, пожалуйста , выделите эти строки в текстовом редакторе и нажмите на кнопку «образцы кода» ( { } ) на панели инструментов редактора, чтобы красиво оформить и выделить синтаксис! Если вы публикуете сообщения об ошибках, пожалуйста , используйте кавычки ( ` » ` ) для правильного форматирования сообщения об ошибке.

3. как создать breadcrumb из xml

Ответ №1:

вот решение. Это не очень красиво, но делает то, что вы хотите.

  string xmlContent=@"<?xml version=""1.0"" encoding=""utf-8"" ?>
                                <PrimaryLink>
                                  <LinkID>p1</LinkID>
                                    <SecondaryLink>
                                      <LinkID>s1</LinkID>      
                                        <LeftMenu>
                                          <NavLinks>
                                            <LinkID>n1</LinkID>
                                          </NavLinks>
                                          <NavLinks>
                                            <LinkID>n2</LinkID>               
                                          </NavLinks>
                                        </LeftMenu>
                                    </SecondaryLink>  
                                </PrimaryLink>";

        XDocument doc = XDocument.Parse(xmlContent);
        var targetNode = doc.Descendants().Where(p=>p.Value=="n1").FirstOrDefault();
        string path = null;
        if (targetNode!=null)
        {
            path=targetNode.AncestorsAndSelf().Elements("LinkID").Select(p => p.Value).Aggregate((i, j) => j   "=>"   i);
        }
  

Он покажет «p1 => s1 => n1»

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

1. XDocument doc = XDocument. Синтаксический анализ (xmlContent); xmlContent — это строка, но я получаю узлы (var)

2. Там есть все, кроме загрузки XML-данных. Вы не говорите, откуда это берется, поэтому я упростил задачу, используя данные, поступающие из строки. Если вы хотите загрузить его из файла, просто выполните «XDocument d = XDocument. Загрузить («c:test.xml «);»

3. я хочу привязать это к repeator . это кнопка ссылки, поэтому соответствующий URL-адрес также необходимо извлечь .. есть идеи?