#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-адрес также необходимо извлечь .. есть идеи?