【问题标题】:How to convert objects of array in to XML in Javascript如何在Javascript中将数组对象转换为XML
【发布时间】:2019-07-31 05:11:33
【问题描述】:

我有一个数据嵌套数据结构或JSON,如何在Javascript 中将其转换为XML 结构。

[
    {"loanId" : "LA00123", "MemberId" : "MI00123"},
    {"loanId" : "LA001234", "MemberId" : "MI001234"}
]

异常结果:

<result>
    <loanID>LA00123</loanID>
    <MemberId>MI00123</MemberId>
</result>
<result>
    <loanID>LA001234</loanID>
    <MemberId>MI001234</MemberId>
</result>

【问题讨论】:

标签: javascript arrays xml javascript-objects


【解决方案1】:

只需通过迭代,您就可以先准备 XML 元素,然后通过空字符进行连接。

这里Array.prototype.map() 用于对数组进行迭代,Array.prototype.join() 用于将准备好的 XML 元素连接到最终结果。

const data =  [{"loanId" : "LA00123", "MemberId" : "MI00123"},{"loanId" : "LA001234", "MemberId" : "MI001234"}]

const result = data.map(obj => `<result><loanID>${obj.loanId}</loanID><MemberId>${obj.MemberId}</MemberId></result>`).join('')
console.log(result)

【讨论】:

    【解决方案2】:

    如果要将数据转换为 XML 作为字符串,则可以对数组执行 reduce:

    let obj = [{
        "loanId": "LA00123",
        "MemberId": "MI00123"
      },
      {
        "loanId": "LA001234",
        "MemberId": "MI001234"
      }
    ];
    
    const toXml = (data) => {
      return data.reduce((result, el) => {
       return result + `<result><loadId>"${el.loanId}"</loadID><MemberId>${el.MemberId}</MemberId></result>\n`
      }, '')
    }
    
    console.log(toXml(obj));

    创建 XML 对象(矫枉过正):

    let obj = [{
        "loanId": "LA00123",
        "MemberId": "MI00123"
      },
      {
        "loanId": "LA001234",
        "MemberId": "MI001234"
      }
    ];
    
    let doc = document.implementation.createDocument(null, "myXML");
    
    obj.forEach(a => {
      let result = doc.createElement("result");
      Object.entries(a).forEach(b => {
        let node = doc.createElement(b[0]);
        node.append(doc.createTextNode(b[1]));
        result.append(node);
      });
      doc.documentElement.append(result);
    });
    
    console.log(new Array(...doc.documentElement.children).reduce((a, b) => a + new XMLSerializer().serializeToString(b), ''));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-20
      • 2022-01-01
      • 1970-01-01
      • 2015-01-13
      • 2011-04-21
      • 2020-12-13
      • 1970-01-01
      • 2019-04-06
      相关资源
      最近更新 更多