Asp.net и деревья?

Здравствуйте. Изучаю понемногу ASP.NET, и не как не могу понять, как вывести древовидную структуру из xml с неизвестной вложенностью. (Возможно с помощью TreeView)

xslt тут наверное не подойдет, т.к. у меня у каждого пункта есть чекбокс, на который нужно повесить событие в .net

То есть, у меня есть xml такого вида:

<root>
    <item name="test1">
          <item name="test11">
               <item name="test111" />
               <item name="test112" />
          </item>
          <item name="test12" />
    </item>
    <item name="test2" />
</root>



И надо вывести так:

<ul>
   <li>
      <input type="checkbox">
      <p>test1</p>
      <ul>
          <li>
             <input type="checkbox">
             <p>test11</p>
             <ul>
                ....
             </ul>
          </li>
      <ul>
   </li>
  <li>
     <input type="checkbox">
     <p>test2</p>
  </li>
</ul>
  • Вопрос задан
  • 2855 просмотров
Решения вопроса 1
@Neir0
Так можно просто рекурсивно все вывести. Примерно вот так:

var str = @"<root>
		<item name=""test1"">
			  <item name=""test11"">
				   <item name=""test111"" />
				   <item name=""test112"" />
			  </item>
			  <item name=""test12"" />
		</item>
		<item name=""test2"" />
	</root>";
	
	
	var rootNode = XElement.Parse(str);
	
	OutNode(rootNode);


void OutNode(XElement rootNode)
{
    Console.WriteLine ("ul");
    foreach(var node in rootNode.Elements().Where(x => x.Name=="item") )
	{
	   Console.WriteLine ("li");
	    Console.WriteLine (node.Attribute("name").Value);
	    if(node.HasElements)   OutNode(node);
	  Console.WriteLine ("/li");
	}
   Console.WriteLine ("/ul");
}



Ну и оформить прямо в шаблоне, методе хелпере или как удобно.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
maseal
@maseal
Senior developer: .net, java, python, javascript
А ещё можно написать маленькую xslt-шку и «вертеть» таким преобразованием как хочешь, не меняя кода программы
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы