用Javascript对XML数据进行排序
我需要一些JavaScript方面的帮助。我正在使用XML,所以我需要在其中实现JavaScript,我想对元素节点名进行排序。请看下图,这将使你清楚我在说什么。请我想要的代码与JavaScript而不是Jquery用Javascript对XML数据进行排序,javascript,html,xml,xml-parsing,Javascript,Html,Xml,Xml Parsing,我需要一些JavaScript方面的帮助。我正在使用XML,所以我需要在其中实现JavaScript,我想对元素节点名进行排序。请看下图,这将使你清楚我在说什么。请我想要的代码与JavaScript而不是Jquery 函数生成(节点){ 如果(node.nodeType!=1)返回“”; var html=“”+node.nodeName; var htmlForChildNodes=“”; 对于(var i=0;i
函数生成(节点){
如果(node.nodeType!=1)返回“”;
var html=“”+node.nodeName;
var htmlForChildNodes=“”;
对于(var i=0;i”+htmlForChildNodes+””;
}
html+=“ ”;
返回html;
}
谢谢您应该解析xml文档并将其放入javascript对象数组中。这些很容易分类 因此,与其调用
generate(xmlDoc.documentElement)
直接从xml返回html,不如添加一个parse(xmlDoc.documentElement)
函数,返回数组数组。在此之后,更改generate()函数以获取具有子属性的对象,该子属性是数组,而不是原始xml dom
解析应该如下所示:
function parse(node) {
if (node.nodeType != 1) return null;
var result = {name: node.nodeName};
var children = [];
for (var i = 0; i < node.childNodes.length; i++) {
var child = parse(node.childNodes[i]);
if (child)
{
children.push(child);
}
}
result.children = children;
return result;
}
函数解析(节点){
如果(node.nodeType!=1)返回null;
var result={name:node.nodeName};
var children=[];
对于(var i=0;i
现在,您可以通过创建子对象对数组进行排序
排序后,调用(已更改)generate()
函数,该函数将迭代对象/数组以生成html
。我将
generate()
函数的更改留给了您。(使用您的浏览器控制台检查生成的数据结构)先生,我很困惑,需要一个实时的小提琴小提琴小提琴中有一些注释,解释仍然需要做什么。
function generate(node) {
if (node.nodeType != 1) return "";
var html = "<li>" + node.nodeName;
var htmlForChildNodes = "";
for (var i = 0; i < node.childNodes.length; i++) {
htmlForChildNodes += generate(node.childNodes[i]);
}
if (htmlForChildNodes) {
html += "<ul>" + htmlForChildNodes + "</ul>";
}
html += "</li>";
return html;
}
function parse(node) {
if (node.nodeType != 1) return null;
var result = {name: node.nodeName};
var children = [];
for (var i = 0; i < node.childNodes.length; i++) {
var child = parse(node.childNodes[i]);
if (child)
{
children.push(child);
}
}
result.children = children;
return result;
}