【问题标题】:drop down list wise xml all attribute value下拉列表明智的xml所有属性值
【发布时间】:2013-03-30 17:45:27
【问题描述】:

我有一个 xml 文件:-

<child_4 entity_id="4" value="Activities" parent_id="2">
    <child_10066 entity_id="10066" value="Physical1" parent_id="4">
        <child_10067 entity_id="10067" value="Cricket" parent_id="10066">
            <child_10068 entity_id="10068" value="One Day" parent_id="10067"/>
        </child_10067>
    </child_10066>
    <child_10069 entity_id="10069" value="Test2" parent_id="4"/>
    <child_10070 entity_id="10070" value="Test3" parent_id="4"/>
    <child_10071 entity_id="10071" value="Test4" parent_id="4"/>
    <child_10072 entity_id="10072" value="Test5" parent_id="4"/>
    <child_5 entity_id="5" value="Physical" parent_id="4"/>
</child_4>

我想得到这样的结果:-

第一眼:-

Activities
Test2
Test3
Test4
Test5
Physical

点击Activities后下拉子列表:-

Activities
          Physicall
Test2
Test3
Test4
Test5
Physical

如果点击Physicall

Activities
          Physicall
                   Cricket
Test2
Test3
Test4
Test5
Physical

类似树型的东西
看起来像下拉菜单...
谢谢...

【问题讨论】:

  • 本站有很多教程和其他网络资源以及如何使用 jQuery/javascript 解析 xml 的帖子

标签: jquery html xml ajax drop-down-menu


【解决方案1】:

我做了jquery版本

var xml = [
'<child_4 entity_id="4" value="Activities" parent_id="2">',
    '<child_10066 entity_id="10066" value="Physical1" parent_id="4">',
        '<child_10067 entity_id="10067" value="Cricket" parent_id="10066">',
            '<child_10068 entity_id="10068" value="One Day" parent_id="10067"/>',
        '</child_10067>',
    '</child_10066>',
    '<child_10069 entity_id="10069" value="Test2" parent_id="4"/>',
    '<child_10070 entity_id="10070" value="Test3" parent_id="4"/>',
    '<child_10071 entity_id="10071" value="Test4" parent_id="4"/>',
    '<child_10072 entity_id="10072" value="Test5" parent_id="4"/>',
    '<child_5 entity_id="5" value="Physical" parent_id="4"/>',
'</child_4>'
].join('');

代码是:

function makeHtml( $xml , $ul ){

     $xml.each( function(){

            var $node =  $(this) ;

            var $li = $('<li></li>').html( $node.attr('value') );

            $ul.append( $li ); 

            if ( $node.children().length > 0 ) {

                 $childUl = $('<ul></ul>').hide(); 

                 $ul.append( $childUl ); 

                 // toggle hide and show
                 $li.click( function(){

                        if( $(this).next().css('display') == 'none') {
                            $(this).next().show();
                        } else {
                            $(this).next().hide();
                        }  
                 });

                 makeHtml( $node.children() , $childUl );
            }                        

    }); 
} 

makeHtml( $( xml ) , $('ul') );

并在jsfiddle中添加http://jsfiddle.net/PLH8D/3/

【讨论】:

  • 我正在尝试使用 jquery 加载 xml 这种类型的东西:- function load() { $.ajax({ type: "GET", async: false, url: "reg.xml", dataType: "xml", success: function(data){ var xml = [data].join(''); makeHtml( $( xml ) , $('ul') ); } }); } 但收到错误 unrecognized expression: [object XMLDocument]
  • @JackPhp xml 变量应该是 xml string ,试试 console.log( 数据 ),可能不是 xml 字符串 .. [data].join(''); 可以工作,如果数据是 Array
  • @JackPhp 试试success: function(data){ var xml = data ; makeHtml( $( xml ) , $('ul') ); }
  • 我有巨大的 xml 文件,但我只想 &lt;child_4&gt;to&lt;/child_4&gt; 元素...?
  • 数组概念在此解决方案中非常具有误导性... AJAX 接收的 xml 文档不是数组。 @rab 仅使用它来操作演示的 javascript 字符串
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-17
  • 1970-01-01
相关资源
最近更新 更多