vue中引入x2js(针对xml数据进行转换处理)

x2js

这是一个在XML和JavaScript对象之间进行转换的库。转换不一定是无损的,但非常方便。(自己体会)

安装配置


  • 可以到GitHub主页去下载库代码
    地址 :https://github.com/abdmob/x2js

  • 然后直接在使用的页面引用即可

    <script type='text/javascript' src="xml2json.js"></script>
    

  • npm安装

      npm i x2js
    

使用

  • 下文介绍npm安装后在vue项目中使用(仅xml转json,其余自己探索)

x2js.xml2js(xml) //xml2js方法,传入xml格式的数据,返回json对象

方法一
  • 在main.js中引用

    import x2js from 'x2js' //xml数据处理插件
    Vue.prototype.$x2js = new x2js() //创建x2js对象,挂到vue原型上
    
  • 在组件中使用

    var jsonObj = this.$x2js.xml2js('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><ns1:getSDLengthByJMLXResponse xmlns:ns1="http://server.Gw"><ns1:out>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;NODES&gt;&lt;NODE&gt;&lt;NAME&gt;方沟&lt;/NAME&gt;&lt;VALUE&gt;337.9432807&lt;/VALUE&gt;&lt;/NODE&gt;&lt;NODE&gt;&lt;NAME&gt;砖混&lt;/NAME&gt;&lt;VALUE&gt;66.8424335&lt;/VALUE&gt;&lt;/NODE&gt;&lt;NODE&gt;&lt;NAME&gt;盾构&lt;/NAME&gt;&lt;VALUE&gt;14.8955979&lt;/VALUE&gt;&lt;/NODE&gt;&lt;NODE&gt;&lt;NAME&gt;暗挖&lt;/NAME&gt;&lt;VALUE&gt;48.1186321&lt;/VALUE&gt;&lt;/NODE&gt;&lt;NODE&gt;&lt;NAME&gt;顶管&lt;/NAME&gt;&lt;VALUE&gt;2.9357091&lt;/VALUE&gt;&lt;/NODE&gt;&lt;NODE&gt;&lt;NAME&gt;总长度&lt;/NAME&gt;&lt;VALUE&gt;1272.8081174&lt;/VALUE&gt;&lt;/NODE&gt;&lt;NODE&gt;&lt;NAME&gt;检查井总数&lt;/NAME&gt;&lt;VALUE&gt;94885&lt;/VALUE&gt;&lt;/NODE&gt;&lt;/NODES&gt;</ns1:out></ns1:getSDLengthByJMLXResponse></soap:Body></soap:Envelope>')
      var newjsonObj = this.$x2js.xml2js(jsonObj.Envelope.Body.getSDLengthByJMLXResponse.out.__text)
      for(var i = 0;i<newjsonObj.NODES.NODE.length;i++){
          console.log(newjsonObj.NODES.NODE[i].NAME)
          console.log(newjsonObj.NODES.NODE[i].VALUE)
      }
    

因为这个返回的xml数据是两次嵌套,所以执行了两次xml2js(xml)方法

  • 打印结果
打印截图

方法二
  • 直接在组件中require()

    const x2js = require('x2js')
    
  • 在执行的方法中使用

      var x2jsone = new x2js()
      var jsonObj = x2jsone.xml2js('<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soap:Body><ns1:getSDLengthByJMLXResponse xmlns:ns1="http://server.Gw"><ns1:out>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;NODES&gt;&lt;NODE&gt;&lt;NAME&gt;方沟&lt;/NAME&gt;&lt;VALUE&gt;337.9432807&lt;/VALUE&gt;&lt;/NODE&gt;&lt;NODE&gt;&lt;NAME&gt;砖混&lt;/NAME&gt;&lt;VALUE&gt;66.8424335&lt;/VALUE&gt;&lt;/NODE&gt;&lt;NODE&gt;&lt;NAME&gt;盾构&lt;/NAME&gt;&lt;VALUE&gt;14.8955979&lt;/VALUE&gt;&lt;/NODE&gt;&lt;NODE&gt;&lt;NAME&gt;暗挖&lt;/NAME&gt;&lt;VALUE&gt;48.1186321&lt;/VALUE&gt;&lt;/NODE&gt;&lt;NODE&gt;&lt;NAME&gt;顶管&lt;/NAME&gt;&lt;VALUE&gt;2.9357091&lt;/VALUE&gt;&lt;/NODE&gt;&lt;NODE&gt;&lt;NAME&gt;总长度&lt;/NAME&gt;&lt;VALUE&gt;1272.8081174&lt;/VALUE&gt;&lt;/NODE&gt;&lt;NODE&gt;&lt;NAME&gt;检查井总数&lt;/NAME&gt;&lt;VALUE&gt;94885&lt;/VALUE&gt;&lt;/NODE&gt;&lt;/NODES&gt;</ns1:out></ns1:getSDLengthByJMLXResponse></soap:Body></soap:Envelope>')
      var newjsonObj = x2jsone.xml2js(jsonObj.Envelope.Body.getSDLengthByJMLXResponse.out.__text)
      for(var i = 0;i<newjsonObj.NODES.NODE.length;i++){
          console.log(newjsonObj.NODES.NODE[i].NAME)
          console.log(newjsonObj.NODES.NODE[i].VALUE)
      }
    
  • 打印结果(同上)

矫情下

实现的方法有很多,这里只是两种

这里卿洋
愿喜❤️

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • oncontextmenu="window.event.returnValue=false" 将彻底屏蔽鼠标右键 ...
    逍遥至尊灬寳阅读 4,969评论 0 43
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 6,143评论 0 2
  • 清晨,灰色的天幕下,细雨如丝,我撑着伞,走在那条熟悉的路上。细雨中漫步,听雨滴答伞上,落脚树上,驻足草上,遍布路上...
    悠然mafengxian阅读 2,669评论 1 8
  • 小时候,最怕妈妈离开我,有一次妈妈离开了很长很长的时间,我每天都翘首以盼,度日如年,扳着手指头数她回家的日子,看着...
    各少阅读 2,047评论 0 0
  • 岳阳石牛寨,冲着哪里的玻璃桥就想去看看,大三第一学期,已经不在学校,觉得到时候工作了没有时间再去,就查了攻略,觉得...
    追梦的人在路上阅读 3,897评论 0 1