0

我有一些严重的问题。我发现了许多类似的问题,有些问题......有一段时间了。所以我决定是时候问我自己的问题了。

我正在使用 FileReader API 上传 XML 文件,然后将其作为字符串读取,然后查找元素和属性,如下所示:

reader.onload = function (e) {
        var Library = new String(e.target.result);
        if (window.DOMParser) {
            parser = new DOMParser();
            xmlDoc = parser.parseFromString(Library, "text/xml");
            $(xmlDoc).find('book').each(function () {

                Pages = [];
                $(this).find("page").each(function () {
                    Page = [];
                    try {
                        Page[0] = this.getAttributeNode("number").nodeValue;
                        Page[1] = this.getAttributeNode("words").nodeValue;
                    }
                    catch (err) {
                        console.log(err);
                    }
                    Pages.push(Page);
                });
            });
        }
}

我不断收到 TypeError 或这个:

[09:11:08.523] TypeError: $(...).getAttributeNode is not a function
4

1 回答 1

1

我不明白你为什么要混合 jQuery ( $(this).each(...)) 和低级 DOM ( .getAttributeNode())。坚持使用同质 jQuery:http: //jsfiddle.net/kzcBE

var xmlMarkup = "<example>\n" +
                "  <book>\n" +
                "    <page number='p1' words='1104' />\n" +
                "    <page number='p2' words='1230' />\n" +
                "  </book>\n" +
                "  <book>\n" +
                "    <page number='p1' words='123' />\n" +
                "    <page number='p2' words='145' />\n" +
                "  </book>\n" +
                "</example>";

var Library = new String(xmlMarkup);
if (window.DOMParser) {
    parser = new DOMParser();
    xmlDoc = parser.parseFromString(Library, "text/xml");
    $(xmlDoc).find('book').each(function () {
        $(this).find("page").each(function () {
            var numberAttr = $(this).attr("number");
            var wordsAttr = $(this).attr("words");
            console.log("page number: " + numberAttr);
            console.log("word count: " + wordsAttr);
        });
    });
}
于 2013-08-15T17:34:01.437 回答