将JavaScript对象(数组)转换为XML [英] Convert JavaScript object (array) to XML

查看:148
本文介绍了将JavaScript对象(数组)转换为XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个JavaScript对象,使用以下代码将其格式化为JSON:

I have JavaScript object which is formatted as JSON using this code:

obj.push({      
    lat: (lat / 1e5).toFixed(5),
    lon: (lon / 1e5).toFixed(5),
    ele: "0"
});

此对象/数组可能包含潜在的单个对象/属性,如下所示:

This object/array can contain potentially hundereds of indiviual objects/properties which look like this:

 [{"lat":"32.71883","lon":"-16.76118","ele":"0"},{"lat":"32.71882","lon":"-16.76138","ele":"0"},{"lat":"32.71881","lon":"-16.76159","ele":"0"},{"lat":"32.71880","lon":"-16.76179","ele":"0"},{"lat":"32.71879","lon":"-16.76199","ele":"0"},{"lat":"32.71878","lon":"-16.76220","ele":"0"}....]

我想使用以下格式的正确元素标签将此对象转换为XML:

I'd like to convert this object to XML using the correct element tags in the following format:

<trkpt lat="32.7188300" lon="-16.7611800">   // note how this lumps together two separate properties into a single element
 <ele>0</ele>
</trkpt>

我找到了一段代码来转换对象:

I've found a snippet of code to tranform the object:

function objectToXml(object) {
        var xml = '';
        for (var prop in object) {
            if (!object.hasOwnProperty(prop)) {
                continue;
            }
            if (object[prop] == undefined)
                continue;
            xml += "<" + prop + ">";
            if (typeof object[prop] == "object")
                xml += objectToXml(new Object(object[prop]));
            else
                xml += object[prop];
            xml += "<!--" + prop + "--\>";
        }
        return xml;
    }

这肯定会在某种程度上转换对象,但是,它尝试创建一个每个属性集的键,将这些属性连接成一个字符串。

This certainly converts the object to some extent, however, it tries to create a key for each property set, an concatenates the properties into one string.

  <0>32.71883-16.761180<1>32.71882-16.761380<2>32.71881-16.761590<3>32.71880-16.761790<4>.....

关于如何使用此功能的任何建议

Any suggestions on how I can use this function to correctly format the XML as described?

推荐答案

您可以使用字符串模板来做到这一点

You could do that with string templates

const data = [{
  "lat": "32.71883",
  "lon": "-16.76118",
  "ele": "0"
}, {
  "lat": "32.71882",
  "lon": "-16.76138",
  "ele": "0"
}, {
  "lat": "32.71881",
  "lon": "-16.76159",
  "ele": "0"
}, {
  "lat": "32.71880",
  "lon": "-16.76179",
  "ele": "0"
}, {
  "lat": "32.71879",
  "lon": "-16.76199",
  "ele": "0"
}, {
  "lat": "32.71878",
  "lon": "-16.76220",
  "ele": "0"
}]



const toXml = (data) => {
  return data.reduce((result, el) => {
   return result + `<trkpt lat="${el.lat}" lon="${el.lon}"><ele>${el.ele}</ele></trkpt>\n`
  }, '')
}

console.log(toXml(data))

这篇关于将JavaScript对象(数组)转换为XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆