我遇到了一些紧张的问题。我找到了许多类似的问题,有些问题已经有一段时间了。所以我觉得是时候问我自己的问题了。
我使用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
答案 0 :(得分: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);
});
});
}