2015-05-11 4 views
0

У меня есть XML-файл, как показано ниже (вложен набор модели):печати дерева из XML-файла с JQuery

<abc> 
    <!-- Table nested_category --> 
    <nested_category> 
     <category_id>31</category_id> 
     <name>TEST PREP</name> 
     <alias>test-prep</alias> 
     <lft>5</lft> 
     <rgt>8</rgt> 
    </nested_category> 
    <nested_category> 
     <category_id>32</category_id> 
     <name>cricket</name> 
     <alias>cricket</alias> 
     <lft>6</lft> 
     <rgt>7</rgt> 
    </nested_category> 
    <nested_category> 
     <category_id>35</category_id> 
     <name>FOREST</name> 
     <alias>forest2</alias> 
     <lft>1</lft> 
     <rgt>4</rgt> 
    </nested_category> 
    <nested_category> 
     <category_id>36</category_id> 
     <name>animal</name> 
     <alias>animal</alias> 
     <lft>2</lft> 
     <rgt>3</rgt> 
    </nested_category> 
</abc> 

Я хочу, чтобы сформировать дерево с уль Ли разбирая с JQuery only.Please разделяют некоторые идеи сделайте это. Как мы знаем во вложенной модели набора, левое значение дочернего узла всегда находится между левым и правым значением родительского узла. Я знаю, как разбирать xml с jquery, но не имеет понятия о том, чтобы зацикливать catgories на основе lef и правое значение, чтобы сформировать дерево. Спасибо в Advance.

выход будет, как:

TEST PREP 
-cricket 
Forest 
-animal 
--subtree 
---subsubtree and so on. 
+1

Я не думаю, что вы вложен набор левый и правые значения являются правильными. Теперь у вас есть два дерева, которые не перекрываются. Не должны быть значения: 'Test Prep (1: 8), Forest (2: 7), животное (3: 6), крикет (4: 5)'? – Anthony

+0

@ Значения слева и справа от Энни абсолютно правы. – Shelim

+0

Мой или ваш? Вы должны обновить вопрос, показывающий, как будет выглядеть конечный результат. – Anthony

ответ

1

Один из подходов может быть, как показано ниже:

$.ajax({ 
     type: "GET" , 
     url: "xmlfilelocaltion" , 
     dataType: "xml" , 
     success: function(xml) { 

     var xmlDoc = $.parseXML(xml); <------------------this line 

     $(xmlDoc).find('nested_category).each(function(){ 
      //// process children node in this. 
      } 
     } 
1

Предполагая, что у вас есть XML, хранящийся в переменной с именем XML и DIV с идентификатором = "someDiv"

var xmlDoc = $.parseXML(xml); 

var result = "<ul>"; 
$(xmlDoc).find("nested_category").each(function() 
      { 
      result += "<li>"+ "category_id : " + $(this).find("category_id").text() +"</br>"; 
      result += "name : " + $(this).find("name").text() +"</br>"; 
      result += "alias : " + $(this).find("alias").text() +"</br>"; 
      result += "lft : " + $(this).find("lft").text() +"</br>"; 
      result += "rgt : " + $(this).find("rgt").text(); 
      result += "</li>"; 
      }); 
result += "</ul>"; 

$("#someDiv").append(result); 

будет генерировать

  • category_id: 31
    Название: Test Prep
    псевдоним: тест-Prep
    ФЗТ: 5
    RGT: 8
  • category_id: 32
    Название: крикет
    псевдоним: крикет
    ФЗТ: 6
    RGT: 7
  • category_id: 35
    название: ЛЕС
    псевдоним: forest2
    LFT: 1
    RGT: 4
  • category_id: 36
    название: животное
    псевдоним: животные
    ФЗТ: 2
    RGT: 3

Вы можете проверить больше $ .parseXML() в
https://api.jquery.com/jQuery.parseXML/

Надеется, что это помогает, Дэн

Смежные вопросы