1

我正在尝试在不使用元素名称的情况下读取 XML 元素,即以下示例中的“书籍”。例如

  <Books>
           <book>
              <title>C++</title>
              <author>A</author>
           </book>
           <book>
              <title>XML</title>
              <author>X</author>
           </book>
    </Books>

换句话说,如何在 HTML 中使用 jquery 动态读取“Books”元素并将子元素分配给数组。任何帮助,将不胜感激。

4

2 回答 2

1

我为你写了简单的 HTML。演示在http://jsfiddle.net/UC2dM/185/

$.ajax({
    url:'/echo/xml/',
    data: {xml:'<Books><book><title>C++</title><author>A</author> </book><book><title>XML</title><author>X</author></book></Books>'},
    dataType: 'xml',
    type:'post',
    success: function(data){
        var xml = $(data);
        $('#container').append( CategoryToUl(xml.children()) );
    }
});

function CategoryToUl(xml){
    var categories = xml.children('book');
    if (categories.length > 0)
    {
        var ul = $('<ul/>');
        categories.each(function(){
            var $this = $(this);
            var li = $('<li/>');
            var a = $('<a/>',{
                text: $this.children('title').text()
            });
            li.append(a);
            li.append( CategoryToUl( $this ) );
            ul.append(li);
        });
        return ul;
    }
    return null;
}
于 2013-02-18T17:47:59.677 回答
0

谢谢你们。我找到了我的解决方案

var xml = "<root><stuff></stuff><stuff><stuffchild></stuffchild></stuff></root>";

function alertit(jqueryObject) {
    if (jqueryObject.length === 0) return;

    jqueryObject.each(function() {
        alert(this.nodeName.toLowerCase());
    });

    alertit(jqueryObject.children());
}

alertit($(xml));

http://jsfiddle.net/TBwm8/3/

谢谢。

于 2013-02-18T18:37:38.090 回答