【问题标题】:How to use XML response in react-native如何在 react-native 中使用 XML 响应
【发布时间】:2016-05-16 17:44:11
【问题描述】:

我正在通过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 objecttext() 返回字符串,我在react-native 中找不到将string 转换为xml 的方法。

附言由于 React Native 使用 JavaScriptCore,它只是一个 javascript 解释器,所以没有 Browser Object Model,没有文档对象,没有窗口等可以使用

【问题讨论】:

    标签: json xml react-native


    【解决方案1】:

    虽然 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});
    },
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 安装时出现此错误,`在 node-expat@2.3.13 安装脚本 'node-gyp rebuild' 失败`,我无法解决:(
      • 对不起,我选错了。我编辑了答案,请看一下这个
      • 是的,我昨天发现了一个,它转换为 json 但输出的 json 对象不好,它将值转换为数组,所以我需要从数组中读取一个简单的字符串。顺便说一句谢谢
      • 我会简单地转换生成的对象,使用 javascript 很容易。解析xml不行。
      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      • 2023-01-07
      • 2023-02-23
      • 1970-01-01
      • 2017-02-07
      相关资源
      最近更新 更多