开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 931|回复: 15
收起左侧

[求助] Json与XML 互转的js

[复制链接]
结帖率:91% (32/35)
发表于 2023-4-14 18:37:22 | 显示全部楼层 |阅读模式   河南省许昌市
类似于这个的互转 https://www.bejson.com/xml2json/


自己扣的用不了头大


结帖率:96% (187/195)

签到天数: 22 天

发表于 2023-4-14 18:52:47 | 显示全部楼层   浙江省丽水市
将 JSON 转为 XML 的 JavaScript 代码示例:

function json2xml(json) {
  let xml = '';
  for (let prop in json) {
    xml += `<${prop}>`;
    if (typeof json[prop] == 'object') {
      xml += json2xml(json[prop]);
    } else {
      xml += json[prop];
    }
    xml += `</${prop}>`;
  }
  return xml;
}
将 XML 转为 JSON 的 JavaScript 代码示例:

function xml2json(xml) {
  let obj = {};

  if (xml.nodeType == 1) {
    if (xml.attributes.length > 0) {
      obj["@attributes"] = {};
      for (let i = 0; i < xml.attributes.length; i++) {
        obj["@attributes"][xml.attributes[i].nodeName] = xml.attributes[i].nodeValue;
      }
    }
  } else if (xml.nodeType == 3) {
    obj = xml.nodeValue;
  }

  if (xml.hasChildNodes()) {
    for (let i = 0; i < xml.childNodes.length; i++) {
      let item = xml.childNodes[i];
      let nodeName = item.nodeName;

      if (typeof(obj[nodeName]) == "undefined") {
        obj[nodeName] = xml2json(item);
      } else {
        if (typeof(obj[nodeName].push) == "undefined") {
          let old = obj[nodeName];
          obj[nodeName] = [];
          obj[nodeName].push(old);
        }
        obj[nodeName].push(xml2json(item));
      }
    }
  }

  return obj;
}
在上述示例代码中,json2xml函数将 JSON 对象转换为 XML 字符串,而xml2json函数将 XML 字符串转换为 JSON 对象。不过需要注意的是,将 XML 转换为 JSON 时需要注意 XML 中的属性需要以“@attributes”为名的属性存储在 JSON 对象中。
回复 支持 反对

使用道具 举报

结帖率:91% (32/35)
 楼主| 发表于 2023-4-14 19:10:44 | 显示全部楼层   河南省许昌市
lty365 发表于 2023-4-14 18:52
将 JSON 转为 XML 的 JavaScript 代码示例:

function json2xml(json) {

那就跑不起来啊
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 4 天

发表于 2023-4-14 19:10:53 | 显示全部楼层   浙江省台州市
json转xml.e (161.11 KB, 下载次数: 47)
回复 支持 反对

使用道具 举报

结帖率:96% (187/195)

签到天数: 22 天

发表于 2023-4-14 19:20:57 | 显示全部楼层   浙江省丽水市
// 引入X2JS
import x2js from 'x2js'
// 创建X2JS实例
let x = new x2js()
// 定义一个JSON对象
let jsonObj = {name: 'Tom', age: 20}
// 使用js2xml方法将JSON对象转换为XML字符串
let xmlStr = x.js2xml(jsonObj)
// 打印出XML字符串
console.log(xmlStr)



// 引入xml2json.js
var x2js = require ('xml2json');
// 定义一个XML字符串
var xmlStr = '<xml><name>Tom</name><age>20</age></xml>';
// 使用xml2json函数将XML字符串转换为Json对象
var jsonObj = x2js.xml2json (xmlStr);
// 打印出Json对象
console.log (jsonObj);


回复 支持 反对

使用道具 举报

结帖率:96% (187/195)

签到天数: 22 天

发表于 2023-4-14 19:23:45 | 显示全部楼层   浙江省丽水市
// 假设JSON数据为 `data.json`  
const jsonData = '{"name": "John", "age": 30, "city": "New York"}';  
  
// 将JSON数据转换为JavaScript对象  
const jsonObj = JSON.parse(jsonData);  
  
console.log(jsonObj); // 输出 `{"name": "John", "age": 30, "city": "New York"}`


// 假设XML数据为 `data.xml`  
const xmlData = '<root><person><name>John</name><age>30</age><city>New York</city></person><person><name>Jane</name><age>25</age><city>Los Angeles</city></person></root>';  
  
// 将XML数据转换为JavaScript对象  
const xmlObj = XML.parse(xmlData);  
  
console.log(xmlObj); // 输出 `<root><person><name>John</name><age>30</age><city>New York</city></person><person><name>Jane</name><age>25</age><city>Los Angeles</city></person></root>`

需要注意的是,JSON.parse()和XML.parse()方法只能处理JSON和XML数据的字符串表示形式,不能处理JSON和XML数据的二进制表示形式。如果需要处理二进制数据,可以使用JSON.stringify()和XML.stringify()方法。
回复 支持 反对

使用道具 举报

结帖率:96% (187/195)

签到天数: 22 天

发表于 2023-4-14 19:24:39 | 显示全部楼层   浙江省丽水市

我请了CHATGPT  BING 文心一言 帮你 呵呵
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 4 天

发表于 2023-4-14 19:39:29 | 显示全部楼层   浙江省台州市
lty365 发表于 2023-4-14 19:24
我请了CHATGPT  BING 文心一言 帮你 呵呵

回复 支持 反对

使用道具 举报

结帖率:91% (32/35)
 楼主| 发表于 2023-4-14 19:56:12 | 显示全部楼层   河南省许昌市

xml一大就会崩溃了
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 4 天

发表于 2023-4-14 20:03:10 | 显示全部楼层   浙江省台州市

文本文件发来看看
回复 支持 反对

使用道具 举报

  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表