如何在react-native中使用XML响应

时间:2016-05-16 17:44:11

标签: json xml react-native

我正在react-native开发移动应用程序,我必须调用返回XML的odata服务,我需要将其转换为json对象。

我该怎么做?

return fetch(url, {
      method: 'GET',
      headers: {
        Authorization: config.api.auth,
      },
    })
      .then(response => response.json())
      // .then(response => response.text())
      // .then(xml => _xmlToJson(xml))
      .then(json => dosomething(json))
      .catch(ex => showError(ex));
  };

我尝试在text()上获取json()并将其传递给另一个将xml转换为json的方法,但问题是该方法需要xml object但是text()会返回字符串,而我无法在react-native中找到将string转换为xml的方法。

P.S。由于React Native使用JavaScriptCore,这只是一个javascript解释器,所以没有浏览器对象模型,没有文档对象,没有窗口等可以使用

2 个答案:

答案 0 :(得分:2)

虽然Daniel Schmidt的答案是正确的,但我使用了本文中描述的方式,Build a YouTube playlist browser with React Native and Siphon

npm install xmldom 
var DOMParser = require('xmldom').DOMParser;
parseVideos: function(s) {
  console.log('Parsing the feed...');
  var doc = new DOMParser().parseFromString(s, 'text/xml');
  var objs = [];
  var videos = doc.getElementsByTagName('yt:videoId');
  var thumbs = doc.getElementsByTagName('media:thumbnail');
  for (var i=0; i < videos.length; i++) {
    objs.push({
      id: videos[i].textContent,
      thumbnail: thumbs[i].getAttribute('url')
    })
  }
  this.setState({videos: objs});
},

答案 1 :(得分:1)

您可以使用节点领域中的任何xml2js库,例如https://github.com/Leonidas-from-XIV/node-xml2js