javascript - jquery 解析具有无限子级类别的 xml

标签 javascript jquery xml recursive-datastructures parsexml

我对使用 jquery 解析 xml 还很陌生,所以如果我的问题看起来很菜鸟,请原谅我。

我有一个 xml,它包含我的递归类别。其中一些有子类别,有些则没有。它在子类别下有一些深层次的类别。

xml样本;

<Urunler>
    <Urun>
        <ID>1</ID>
        <Parent>0</Parent>
        <Name>Red</Name>
    </Urun>
    <Urun>
        <ID>2</ID>
        <Parent>0</Parent>
        <Name>Green</Name>
    </Urun>
    <Urun>
        <ID>3</ID>
        <Parent>0</Parent>
        <Name>Blue</Name>
    </Urun>
    <Urun>
        <ID>4</ID>
        <Parent>3</Parent>
        <Name>Sky</Name>
    </Urun>
    <Urun>
        <ID>5</ID>
        <Parent>3</Parent>
        <Name>Sea</Name>
    </Urun>
    <Urun>
        <ID>6</ID>
        <Parent>5</Parent>
        <Name>Fish</Name>
    </Urun>
    <Urun>
        <ID>7</ID>
        <Parent>4</Parent>
        <Name>Bird</Name>
    </Urun>
</Urunler>

期望的 HTML 输出

<ul>
    <li>Red</li>
    <li>Green</li>
    <li>Blue
        <ul>
            <li>Sky
                <ul>
                    <li>Bird</li>
                </ul>
            </li>
            <li>Sea
                <ul>
                    <li>Fish</li>
                </ul>
            </li>
        </ul>
    </li>
</ul>

我在 https://codereview.stackexchange.com/questions/43449/parsing-xml-data-to-be-put-onto-a-site-with-jquery 上找到了一个例子 不幸的是它只支持第一个 child 级别。

如果需要; 我通过 $.ajax

调用我的 xml
$.ajax({
   url: 'webservice/Resim/Kategori.xml',
   dataType: 'xml',
   cache:true,
   success: parseXml
});

任何帮助将不胜感激。

最佳答案

您必须遍历 Urun 元素,并附加到新 UL 元素中的正确位置

function parseXml(xml) {

    var ul = $('<ul />');

    $(xml).find('Urun').each(function(index, item) {
        var parent = parseInt( $(this).find('Parent').text() , 10 );
        var li     = $('<li />', {
            text : $(this).find('Name').text(),
            id   : $(this).find('ID').text()
        });

        if (parent !== 0) {
            var parentEl = ul.find('li#' + parent);

            if ( parentEl.find('ul').length === 0 ) 
                parentEl.append( $('<ul />') );

            parentEl.find('ul').append(li);

        } else {
            ul.append(li);
        }

    });

    $('body').append(ul);

}

FIDDLE

关于javascript - jquery 解析具有无限子级类别的 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29756431/

相关文章:

javascript - Socket.io 按钮监听器无法在移动设备上工作

javascript - 显示额外月份的 highstocks 图表

jquery - 为什么不在轮播中显示所有图片

python - 将输出保存为 XML

android.content.res.Resurces$NotFoundException : String resource ID #0x0

javascript - 为什么应用 JSON.stringify 会占用这么多内存?

javascript - 如何将加载和调整大小与 $(window).one ("scroll"结合到一个函数中

Javascript 鼠标滚动增量

javascript - 历史时间轴,控制从 JQuery 生成的左侧空间和宽度

php - 显示带有从 mysql 检索到的标记的谷歌地图