我试图使用具有以下功能的JavaScript从HTML表单中编写XML文档:
JavaScript函数:
function formToXml(form){
var xmldata=['<?xml version="1.0" encoding="UTF-8"?>'];
const elNames = ["author", "title"];
xmldata.push("<book>");
var inputs=form.elements;
for(var i=0;i<inputs.length;i++){
var el=document.createElement(elNames[i]);
if (inputs[i].name){
el.set("name",inputs[i].name);
el.setAttribute("value",inputs[i].value);
xmldata.push(el.outerHTML);
}
}
xmldata.push("</book>");
return xmldata.join("\n");
}生成的文件具有以下格式
<?xml version="1.0" encoding="UTF-8"?>
<book>
<author value="Something" name="author"/>
<title value="Something" name="title"/>
</book>我试图修改该方法,以便使节点具有以下格式的
<author>Something</author>
<title>Something</title>我知道setAttribute()不能工作,因为它在节点中生成了一个属性。我找不到像上面的例子那样设置值的函数。
有什么建议吗?
发布于 2021-11-27 14:54:29
您可以使用元素上的innerHTML属性来设置值。
function formToXml(form) {
var xmldata = ['<?xml version="1.0" encoding="UTF-8"?>'];
const elNames = ["author", "title"];
xmldata.push("<book>");
var inputs = form.elements;
for (var i = 0; i < inputs.length; i++) {
var el = document.createElement(elNames[i]);
if (inputs[i].name) {
el.innerHTML = inputs[i].value; // Set the innerHTML of the element
xmldata.push(el.outerHTML);
}
}
xmldata.push("</book>");
return xmldata.join("\n");
}示例输出:
<?xml version="1.0" encoding="UTF-8"?>
<book>
<author>Robert Louis Stevenson</author>
<title>Treasure Island</title>
</book>https://stackoverflow.com/questions/70135730
复制相似问题