我将以下XML解析为JSON:
XML
<categories>
<cat id="0" caption="Category 0" img="">
<cat id="1" caption="Category 1" img="">
<cat pid="1" cid="0" caption="Sub Category 0" img="" />
<cat pid="1" cid="1" caption="Sub Category 1" img="" />
</cat>
<cat id="2" caption="Category 2" img="">
<cat pid="2" cid="0" caption="Sub Category 0" img="" />
<cat pid="2" cid="1" caption="Sub Category 1" img="" />
</cat>
</categories>
我使用jquery获得了以下内容,但它只适用于没有子猫的单只猫。
JQuery的
$.get("prop-cat.xml", function(xml) {
var data = $.xml2json(xml);
$.each(data, function() {
$.each(this, function(i, value) {
var outer = $('<div/>', {id: 'cat-' + value.cid, class: 'prop_cat'});
var image = $('<div/>', {class: 'cat-image', src: value.img});
var caption = $('<div/>', {class: 'cat-caption', text: value.caption});
$(image).insertAfter($(caption));
$(outer).append($(image));
$(pb).append($(outer));
});
});
});
这里的任何人都有一个干净的解决方案,我不确定我应该如何为此编写逻辑。 我希望它能够解析任何和所有类别,无论它们在哪里。 就像我想要一个包含20个子类别的类别一样,它应该解析它们并在html中显示它们,但它也应该解析这些类别的孩子。
PFF!
由于
答案 0 :(得分:0)
以下内容已修复:
function ParseCategories(i, value) {
if (value.pid != undefined) {
console.log('Child category ' + value.cid + ' parsed, parent: ' + value.pid + '.');
} else {
console.log('Category ' + value.id + ' parsed.');
}
//parse childs and run function again
if (value.cat != undefined) {
$.each(value.cat, function(i, child) {
ParseCategories(i, child);
});
}
}
function loadProps() {
//variables
var pb = $('div#prop_browser');
//parse prop categories
console.log('Parsing Categories....');
$.get("prop-cat.xml", function(xml) {
var data = $.xml2json(xml);
$.each(data, function() {
$.each(this, function(i, value) {
//parse category
ParseCategories(i, value);
});
});
});
}