react native XML解析

    前段时间因为公司需要,自己也有点js基础,于是就开始接触RN,开始了我的踩坑之旅。

    在我的接触中,遇到了后台传过来的数据,在json数据中封存着一段xml数据,是一个三级菜单的数据。我就直接网上百度搜寻react native的xml解析,但是这一次万能的百度也不管用了,我也加了两个rn开发讨论群,问了大佬得知rn没有xml解析,要么后台改,要么原生开发,还有一种就是插件库来解析了。下面我就简单介绍一下react-native-xml2js的xml解析,你也可以看github上react-native-xml2js的介绍: https://github.com/connected-lab/react-native-xml2js

    首先引入react-native-xml2js的库,var parseString = require('react-native-xml2js').parseString;

1、假如你的xml数据是存在文件中的,那么就直接读取文件进行xml解析:

var fs = require('fs'),
    xml2js = require('react-native-xml2js');

var parser = new xml2js.Parser();
fs.readFile(__dirname + '/foo.xml', function(err, data) {
    parser.parseString(data, function (err, result) {
        console.dir(result);
        console.log('Done');
    });
});

2、如果你的xml数据是从后台获取的,那么你需要先打印出来看下你获取的xml数据是否符合xml规范,因为数据在传递过程中会把其他诗句转换成String形式的数据,我在解析的过程中就遇到了获取的数据中最外层有双引号存在,导致我解析一直报错,也因为我未把错误信息打印出来,在这里耗了很长时间。我在解析中遇到的另一个就是“\”这个斜杠的存在,我使用了 .replace(/\\/g, "")用“”替换了“\”(该表达式为js的方法,需要了解更多的可以自己去了解一下js的相关知识)。然后开始解析xml数据:

                var parseString = require('react-native-xml2js').parseString;

var cleanedStr = ((JSON.stringify(xmlData))
.substring(1, (JSON.stringify(xmlData)).length - 1)
.replace(/id=\\/g, "key=")).replace(/\\/g, "");

parseString(cleanedStr, function(err, result) {

                        //当解析正确时,err会返回null,否者不为空。result为解析成功返回的json数据

if(err == null) {


} else {
Alert.alert('xmlData返回', err + "====" + cleanedStr, [{
text: "确定"
}]);
}
});

至此,react native 的xml解析成功,希望对你有所帮助。

你可能感兴趣的:(android,react,native)