【问题标题】:How to write an XML file with certain format using JS?如何使用 JS 编写特定格式的 XML 文件?
【发布时间】:2022-01-05 04:23:51
【问题描述】:

我正在尝试使用具有以下功能的 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() 不起作用,因为它在节点中创建了一个属性。我找不到像上例那样设置值的函数。

有什么建议吗?

【问题讨论】:

    标签: javascript html xml


    【解决方案1】:

    您可以使用元素上的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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-17
      • 1970-01-01
      • 2011-03-17
      • 1970-01-01
      • 2014-08-21
      • 2020-08-02
      • 1970-01-01
      相关资源
      最近更新 更多