jQuery递归函数选择子项

时间:2017-02-13 14:51:06

标签: javascript jquery ajax xml recursion

我有一个jQuery递归函数,它解析我的xml数据但是我试图选择子元素的子元素,所以基本上是元素内部的元素。例如在xml中我想选择<to>标签,因此我可以缩进并添加展开折叠按钮。

XML

<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

的jQuery

function traverse(tree) {
            $(tree).contents().each(function (i, child) {
                    if (child.nodeType == 3) { // text node

                        $("#xml-reader").append(
                            '<span>' + child.nodeValue + '</span>'
                        );

                        // this is my attempt
                        if (child.children) { // element node
                            $("#xml-reader").append(
                                '<br><i>' + child.nodeName + ": " + '</i>'
                            );
                        }
                    } else {
                        if (child.nodeType === 8) { // comment node

                            $("#xml-reader").append(
                                '<i>' + child.nodeValue + '</i>'
                            );
                        }
                        else {
                            $("#xml-reader").append(
                                '<br><b>' + child.nodeName + ": " + '<b>'
                            );
                            traverse(child);
                        }
                    }
                }
            );
        }

        traverse($(xml).find('*'));

1 个答案:

答案 0 :(得分:0)

我使用这个SO回答重新编写了我的遍历函数JavaScript Recursion to format lists from XML to HTML 一个主要的变化是改变了这个if语句

if( node.childNodes[index].tagName == 'name' ) {

if (node.nodeType === Node.TEXT_NODE)

这样我可以读取任何xml文件而不管tagName