微信小程序解析XML数据

2022年7月3日09:17:30

  最近在工作中做微信小程序,遇到了后台接口返回的数据格式是XML的问题,而微信小程序不支持DOM,不能直接用DOMParser去解析,所以只能用第三方库去解析了。

  1. 下载xmldom库:https://github.com/jindw/xmldom
  2. 将dom.js、dom-parser.js、sax.js,entities.js拷贝微信小程序需要的文件夹下
  3. 在需要使用的js页面引入import Parser from"…/…/common/js/dom-parser"
    (注意:建议在src根目录下建立lib文件,把相关的工具文件放在里面,便于管理和调用)
//处理接口返回的xml字符串格式的JSON报文import 	Parserfrom'../../common/js/dom-parser'exportconstformatXml=(data, list)=>{let returnData=[]let XMLParser=newParser.DOMParser()let xmlData= XMLParser.parseFromString(data,'text/xml')for(let i=0; i< list.length; i++){let itemList= xmlData.getElementsByTagName(list[i])if(itemList.length>0){
			returnData.push(itemList)}}return returnData}

上面是处理XML而封装的一个方法,根据list参数传入的数组字段,将XML中需要提取的数据转为数组。
例如获取到后台接口的数据后,可以获取如下的几个字段标签的内容。

let detailInfo = formatXml(res.content, ['title', 'media', 'date', 'hour', 'paragraph'])

所用的xml数据:

<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article SYSTEM "tradingcentral.dtd"><articleid="10329761"status="new"><analysistype="TA"><content><header><date>20190726</date><hour>07:43</hour><author>TC</author><mediatype="IMAGE">/xxx/xxx/xxx/xxxxxxxxxxxxxxxxxxxxx.gif</media><codetype="ISIN">XD0002747208</code><codetype="TICKER">SILV</code><codetype="RIC">XAG=</code><country>XX</country><name>Silver spot</name><product>commodities</product><term>INTRADAY</term><option><watchtype="opinionST">2</watch><watchtype="deltaST">0</watch><watchtype="opinionMT">1</watch><watchtype="deltaMT">0</watch><chartlevels><resistance3>16.7000</resistance3><resistance2>16.6500</resistance2><resistance1>16.5600</resistance1><last>16.4500</last><pivot>16.3100</pivot><support1>16.3100</support1><support2>16.2500</support2><support3>16.1800</support3></chartlevels></option></header><storylang="ZH_CN"><keywords>Silver spot</keywords><title>白银 当日内: 期待上涨。</title><summary>在 16.3100 之上,看涨,目标价位为 16.5600 ,然后为 16.6500 。</summary><paragraph>转折点: 16.3100</paragraph><paragraph/><paragraph>&lt;b&gt;交易策略:&lt;/b&gt; 在 16.3100 之上,看涨,目标价位为 16.5600 ,然后为 16.6500 。</paragraph><paragraph/><paragraph>&lt;b&gt;备选策略:&lt;/b&gt; 在 16.3100 下,看空,目标价位定在 16.2500 ,然后为 16.1800。</paragraph><paragraph/><paragraph>&lt;b&gt;技术点评:&lt;/b&gt; RSI技术指标上,看涨。</paragraph><paragraph/><paragraph>&lt;b&gt;支撑位和阻力位:&lt;/b&gt;</paragraph><paragraph>16.7000</paragraph><paragraph>16.6500</paragraph><paragraph>16.5600</paragraph><paragraph>&lt;b&gt;16.4500&lt;/b&gt; 收盘价</paragraph><paragraph>16.3100</paragraph><paragraph>16.2500</paragraph><paragraph>16.1800</paragraph><paragraph/><paragraph>TRADING CENTRAL研究总监:Rémy GAUSSENS</paragraph><paragraph/><paragraph>TRADING CENTRAL受ANACOFI-CIF(一家经金融市场管理局批准的协会,于ORIAS注册,编号:17005458)行为守则管辖。</paragraph><paragraph/><paragraph>编制日期和时间:07-26-2019 at 09:43 UTC+1</paragraph><paragraph>价格参考:16.4500 last known on 07-26-2019 at 09:43 UTC+1</paragraph><paragraph>投资时限:INTRADAY</paragraph><paragraph/><paragraph>TRADING CENTRAL推荐阅读相关法律和监管信息,以及与所提供信息相关的警告(可访问如下链接:https://www.tradingcentral.com/terms-of-use/)</paragraph><paragraph/><paragraph>Copyright 1999 - 2019  TRADING CENTRAL</paragraph></story></content></analysis></article>
  • 作者:还是那个zpp
  • 原文链接:https://blog.csdn.net/aaaaa1994/article/details/97392959
    更新时间:2022年7月3日09:17:30 ,共 2963 字。