最近在工作中做微信小程序,遇到了后台接口返回的数据格式是XML的问题,而微信小程序不支持DOM,不能直接用DOMParser去解析,所以只能用第三方库去解析了。
- 下载xmldom库:https://github.com/jindw/xmldom
- 将dom.js、dom-parser.js、sax.js,entities.js拷贝微信小程序需要的文件夹下
- 在需要使用的js页面引入import Parser from"…/…/common/js/dom-parser"
(注意:建议在src根目录下建立lib文件,把相关的工具文件放在里面,便于管理和调用)
//处理接口返回的xml字符串格式的JSON报文
import Parser from '../../common/js/dom-parser'
export const formatXml = (data, list) => {
let returnData = []
let XMLParser = new Parser.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"><article id="10329761" status="new">
<analysis type="TA">
<content>
<header