У меня есть большой объект javascript, преобразованный из XML. Он имеет иерархию, атрибуты xml (свойства, определенные символом @attributename) и значения xml (свойства, определенные символом #text). Итак, следующее:
<parentnode length="5">
<childnode length="22" depth="45">This is a child node</childnode>
</parentnode>
создает объект, который выглядит так:
parentnode {
@length: "22"
childnode {
@depth: "45",
@text: "This is a child node"
}
}
и я хочу создать список HTML, который выглядит так:
<ul>
<li data-length="22">parentnode
<ul>
<li data-depth="45">childnode: This is a child node</li>
</ul>
</li>
</ul>
Я пробовал различные решения, но ни один из них не работает для объектов, вложенных в объекты с различными типами данных.
Сложите простое решение. Может быть, это поможет кому-то еще:
function createHtmlList(obj){
var output = "";
Object.keys(obj).forEach(function(k) {
if (typeof obj[k] == "object" && obj[k] !== null){
output += "<li>" + htmlSpecialChars(k) + "<ul>";
output += createHtmlList(obj[k]);
output += "</ul></li>";
} else {
output += "<li>" + k + " : " + obj[k] + "</li>";
}
});
return output;
}