Javascript 分层创建DOM
我有一个键和值的列表,我打算基于这些信息创建一个xml 我的名单申报表:Javascript 分层创建DOM,javascript,xml,dom,Javascript,Xml,Dom,我有一个键和值的列表,我打算基于这些信息创建一个xml 我的名单申报表: 1 person 2 information 3 name 3 surname 2 address 3 street 3 country 我想生成一个xml: <xml> <person> <information> <name></name> <surname></sur
1 person
2 information
3 name
3 surname
2 address
3 street
3 country
我想生成一个xml:
<xml>
<person>
<information>
<name></name>
<surname></surname>
</information>
<address>
<street></street>
<country></country>
</address>
</person>
</xml>
我有一个元素列表,遍历这些元素将按层次结构创建xml文档。我已经有了这个代码:
var elements = document.getElementsByClassName('elements');
var xml = document.createElement('xml');
for (var i = 0; i < elements.length; i++) {
var key = elements[i].getAttribute('data-key');
var value = elements[i].getAttribute('data-value');
console.log(key +' -> '+ value);
// HERE: create new elements appendChild "var xml"
}
var elements=document.getElementsByClassName('elements');
var xml=document.createElement('xml');
对于(var i=0;i'+值);
//此处:创建新元素并添加子“var xml”
}
注意:这是未经测试的,我需要离开。但是,这应该给你一个评论的起点
var elements = document.getElementsByClassName('elements');
var xml = document.createElement('xml');
var curElem = xml;
var curDepth = 0;
for (var i = 0; i < elements.length; i++) {
var key = elements[i].getAttribute('data-key');
var value = elements[i].getAttribute('data-value');
console.log(key +' -> '+ value);
// HERE: create new elements appendChild "var xml"
// Create the new element
var elem = document.createElement(value);
// If we are further down the hierarchy, simply add the child
if (key > curDepth) {
curElem.appendChild(elem);
} else if (key == curDepth) {
// We are a sibling of our current containing element
// so simply add to the parent
curElem.parentElement.appendChild(elem);
curElem = elem;
} else if (key < curDepth) {
// We are at some point ABOVE our current element
// so start walking UP until we reach the level indicated
// and then add the element to the parent
while (curDepth >= key) {
curElem = curElem.parentElement;
curDepth--;
}
curElem.parentElement.appendChild(elem);
}
curElem = elem;
curDepth = key;
}
var elements=document.getElementsByClassName('elements');
var xml=document.createElement('xml');
var curElem=xml;
var-curDepth=0;
对于(var i=0;i'+值);
//此处:创建新元素并添加子“var xml”
//创建新元素
var elem=document.createElement(值);
//如果我们更深入层次结构,只需添加子级
如果(键>curDepth){
附肢儿童(elem);
}else if(键==curDepth){
//我们是当前包含元素的兄弟
//因此,只需添加到父级
curElem.parentElement.appendChild(elem);
curElem=elem;
}否则如果(键=键){
curElem=curElem.parentElement;
凝乳深度--;
}
curElem.parentElement.appendChild(elem);
}
curElem=elem;
curDepth=键;
}
注意:这是未经测试的,我需要离开。但是,这应该给你一个评论的起点
var elements = document.getElementsByClassName('elements');
var xml = document.createElement('xml');
var curElem = xml;
var curDepth = 0;
for (var i = 0; i < elements.length; i++) {
var key = elements[i].getAttribute('data-key');
var value = elements[i].getAttribute('data-value');
console.log(key +' -> '+ value);
// HERE: create new elements appendChild "var xml"
// Create the new element
var elem = document.createElement(value);
// If we are further down the hierarchy, simply add the child
if (key > curDepth) {
curElem.appendChild(elem);
} else if (key == curDepth) {
// We are a sibling of our current containing element
// so simply add to the parent
curElem.parentElement.appendChild(elem);
curElem = elem;
} else if (key < curDepth) {
// We are at some point ABOVE our current element
// so start walking UP until we reach the level indicated
// and then add the element to the parent
while (curDepth >= key) {
curElem = curElem.parentElement;
curDepth--;
}
curElem.parentElement.appendChild(elem);
}
curElem = elem;
curDepth = key;
}
var elements=document.getElementsByClassName('elements');
var xml=document.createElement('xml');
var curElem=xml;
var-curDepth=0;
对于(var i=0;i'+值);
//此处:创建新元素并添加子“var xml”
//创建新元素
var elem=document.createElement(值);
//如果我们更深入层次结构,只需添加子级
如果(键>curDepth){
附肢儿童(elem);
}else if(键==curDepth){
//我们是当前包含元素的兄弟
//因此,只需添加到父级
curElem.parentElement.appendChild(elem);
curElem=elem;
}否则如果(键=键){
curElem=curElem.parentElement;
凝乳深度--;
}
curElem.parentElement.appendChild(elem);
}
curElem=elem;
curDepth=键;
}
与Forty3的答案非常相似,但更加简洁,使用XML文档,而不是HTML文档
请注意,如果文档是HTML文档,则document.createElement会将标记名更改为小写,而如果是XML文档,则保留标记大小写。此外,在HTML文档中,它依赖于对自定义和未知标记名的支持,而这些标记名可能不可用,因此最好使用XML文档
我已经建立了一个数据源,它似乎来自文档,所以希望它合理地近似于您正在使用的内容。我在这个层面上做了一些最小的验证,应该对输入进行更多的验证,以确保它符合一些标准化的格式
函数buildDoc(){
//创建用于创建元素的XML文档
var doc=document.implementation.createDocument(null,null,null);
var data=document.getElementsByClassName('elements');
var root=doc.createElement('xml');
var parent=根;
风险值水平=0;
变量节点,标记名;
对于(var i=0,iLen=data.length;i与Forty3的答案非常相似,但更简洁,使用XML文档,而不是HTML文档
请注意,如果文档是HTML文档,则document.createElement会将标记名更改为小写,而如果是XML文档,则保留标记大小写。此外,在HTML文档中,它依赖于对自定义和未知标记名的支持,这些标记名可能不可用,因此最好使用XML文档
我已经建立了一个数据源,它似乎来自文档,所以希望它合理地近似于您正在使用的内容。我已经在级别上进行了一些最小验证,应该对输入进行更多验证,以确保它符合一些标准化格式
函数buildDoc(){
//创建用于创建元素的XML文档
var doc=document.implementation.createDocument(null,null,null);
var data=document.getElementsByClassName('elements');
var root=doc.createElement('xml');
var parent=根;
风险值水平=0;
变量节点,标记名;
对于(var i=0,iLen=data.length;i关于创建XML文档,其中肯定有一个是重复的?不清楚您是要创建XML字符串还是XML文档。我在发布问题之前进行了研究,但没有结果处理相同的问题。关于创建XML文档,肯定有一个是重复的?不是清楚是要创建XML字符串还是XML文档。我在发布问题a之前做了研究