使用箭头函数将xml转成json

港控/mmm° 2023-06-10 06:24 68阅读 0赞

export const Requers=(con)=>{
//加载xml数据
function loadXml(con) {
if (con == null) {
return null;
}
var doc = con;
try{
doc = createXMLDOM();
doc.async = false;
doc.loadXML(con);
}catch(e){
doc = $.parseXML(con);
}
return doc;
}

  1. //xml数据转成json对象的数据
  2. function xmlTojson(xmlObj, nodename, isarray)\{
  3. var obj = $(xmlObj);
  4. var itemobj = \{\};
  5. var nodenames = "";
  6. var getAllAttrs = function(node)\{//递归解析xml 转换成json对象
  7. var \_itemobj = \{\};
  8. var notNull = false;
  9. var nodechilds = node.childNodes;
  10. var childlenght = nodechilds.length;
  11. var \_attrs = node.attributes;
  12. var firstnodeName = "\#text";
  13. try\{
  14. firstnodeName = nodechilds\[0\].nodeName;
  15. \}catch(e)\{
  16. \}
  17. if((childlenght > 0 && firstnodeName != "\#text") || \_attrs.length > 0)\{
  18. var \_childs = nodechilds;
  19. var \_childslength = nodechilds.length;
  20. var \_fileName\_ = "";
  21. if(undefined != \_attrs)\{
  22. var \_attrslength = \_attrs.length;
  23. for(var i = 0; i < \_attrslength; i++)\{//解析xml节点属性
  24. var attrname = \_attrs\[i\].nodeName;
  25. var attrvalue = \_attrs\[i\].nodeValue;
  26. \_itemobj\[attrname\] = attrvalue;
  27. \}
  28. \}
  29. for (var j = 0; j < \_childslength; j++) \{//解析xml子节点
  30. var \_node = \_childs\[j\];
  31. var \_fildName = \_node.nodeName;
  32. if("\#text" == \_fildName)\{break;\};
  33. if(\_itemobj\[\_fildName\] != undefined)\{//如果有重复的节点需要转为数组格式
  34. if(!(\_itemobj\[\_fildName\] instanceof Array))\{
  35. var a = \_itemobj\[\_fildName\];
  36. \_itemobj\[\_fildName\] = \[a\];//如果该节点出现大于一个的情况 把第一个的值存放到数组中
  37. \}
  38. \}
  39. var \_fildValue = getAllAttrs(\_node);
  40. try\{
  41. \_itemobj\[\_fildName\].push(\_fildValue);
  42. \}catch(e)\{
  43. \_itemobj\[\_fildName\] = \_fildValue;
  44. \_itemobj\["length"\] = 1;
  45. \}
  46. \}
  47. \}else\{
  48. \_itemobj = (node.textContent == undefined) ? node.text : node.textContent;
  49. \}
  50. return \_itemobj;
  51. \};
  52. if(nodename)\{
  53. nodenames = nodename.split("/")
  54. \}
  55. for(var i = 0;i < nodenames.length; i++)\{
  56. obj = obj.find(nodenames\[i\]);
  57. \}
  58. $(obj).each(function(key, item)\{
  59. if(itemobj\[item.nodeName\] != undefined)\{
  60. if(!(itemobj\[item.nodeName\] instanceof Array))\{
  61. var a = itemobj\[item.nodeName\];
  62. itemobj\[item.nodeName\] = \[a\];
  63. \}
  64. itemobj\[item.nodeName\].push(getAllAttrs(item));
  65. \}else\{
  66. if(nodenames.length > 0)\{
  67. itemobj\[item.nodeName\] = getAllAttrs(item);
  68. \}else\{
  69. itemobj\[item.firstChild.nodeName\] = getAllAttrs(item.firstChild);
  70. \}
  71. \}
  72. \});
  73. if(nodenames.length > 1)\{
  74. itemobj = itemobj\[nodenames\[nodenames.length-1\]\];
  75. \}
  76. if(isarray && !(itemobj instanceof Array) && itemobj != undefined)\{
  77. itemobj = \[itemobj\];
  78. \}
  79. return itemobj;
  80. \}

}

// export const convertToJSON = (xmlDoc) => {

// console.log(“**“, xmlDoc)
// //准备JSON字符串和缓存(提升性能)
// var jsonStr = “”;
// var buffer = new Array();

// buffer.push(“{“);
// //获取xml文档的所有子节点
// var nodeList = xmlDoc.childNodes;

// generate(nodeList);

// /**
// * 中间函数,用于递归解析xml文档对象,并附加到json字符串中
// * @param node_list xml文档的的nodeList
// */
// function generate(node_list) {

// for (var i = 0; i < node_list.length; i++) {
// var curr_node = node_list[i];
// //忽略子节点中的换行和空格
// if (curr_node.nodeType == 3) {
// continue;
// }
// //如果子节点还包括子节点,则继续进行遍历
// if (curr_node.childNodes.length > 1) {
// buffer.push(“\“” + curr_node.nodeName + “\“: {“);
// generate(curr_node.childNodes);
// } else {
// var firstChild = curr_node.childNodes[0];

// if (firstChild != null) {
// //nodeValue不为null
// buffer.push(“\“” + curr_node.nodeName + “\“:\“” + firstChild.nodeValue + “\“”);
// } else {
// //nodeValue为null
// buffer.push(“\“” + curr_node.nodeName + “\“:\“\“”);
// }

// }
// if (i < (node_list.length - 2)) {
// buffer.push(“,”);
// } else {
// break;
// }
// }
// //添加末尾的”}“
// buffer.push(“}“);
// }

// jsonStr = buffer.join(“”);
// return jsonStr;
// }

正文

import {
Requers
} from ‘../../../components/CheckContext.js’

用法:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0NTRE5fcWlhbmdl_size_16_color_FFFFFF_t_70

发表评论

表情:
评论列表 (有 0 条评论,68人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java json字符串复杂对象

    简单说明: 为了方便数据在客户端及服务器端的传输,有时候我们会用一些比较方便组织的数据类型,比如json、xml等传给客户端,客户端也可以重新组织数据传回服务器端。JSON和