web-dev-qa-db-fra.com

React-Native récupère les données XML

Je suis nouveau sur React-Native. Essayer de faire des applications très simples. Impossible de trouver comment récupérer des données XML. Avec JSON, tout est clair et simple. 

Mais comment récupérer du XML? J'ai essayé de le convertir en JSON via this et quelques autres scripts similaires, mais sans succès. Besoin d'aide pour :/

Mon code a l'air très simple:

var xml_url = 'http://api.example.com/public/all.xml';

var ExampleProject = React.createClass({
    getInitialState: function() {
    return {
      data: {results:{}},
    };
  },
  componentDidMount: function() {
    this.fetchData();
  },
  fetchData: function() {
    fetch(xml_url)
      .then((response) => response.json())
      .then((responseData) => {
        this.setState({
          data: responseData.data,
        });
      })
      .done();
  },

  render: function() {
    return (
      <View style={styles.wrapper}>
        <View style={styles.container}>
          <View style={styles.box}>
            <Text style={styles.heading}>Heading</Text>
            <Text>Some text</Text>
          </View>
        </View>
      </View>
    );
  },
});
17
Toon

vous pouvez essayer https://github.com/connected-lab/react-native-xml2js ,

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

    fetch('link')
        .then(response => response.text())
        .then((response) => {
            parseString(response, function (err, result) {
                console.log(response)
            });
        }).catch((err) => {
            console.log('fetch', err)
        })

Je l'utilise pour mon projet.

7
lam luu

vous pouvez utiliser npm install xmldom , chargez maintenant DOMParser comme ci-dessous:

var DOMParser = require('xmldom').DOMParser

Je l'utilise pour mon projet.

5
kai

Tout d’abord - React Native utilise JavaScriptCore, qui est simplement un interpréteur javascript, c’est-à-dire qu’il n’existe pas de modèle d’objet de navigateur, d’objet document, de fenêtre, etc. C’est pourquoi vous ne pouvez pas utiliser DOMParser par exemple. 

En effet, React vous fournit un XMLHttpRequest wrapper, mais il n’inclut pas responseXML.

Je n'ai pas trouvé de solution pour cela, alors je viens de créer ma propre bibliothèque pour cela: react-native-xml qui vous permet d'analyser xml et de faire des requêtes XPath pour celle-ci:

let xml = require('NativeModules').RNMXml
xml.find('<doc a="V1">V2</doc>', 
         ['/doc/@a', '/doc'], 
          results => results.map(nodes => console.log(nodes[0]))) 
// Output: 
//  V1 
//  V2 
2
Artem Yarulin

J'utilise react-native et je n'aimais pas vraiment xmldom . J'ai écrit mon propre analyseur syntaxique XML rea-native . Vous pouvez le vérifier https: //www.npmjs. com/package/react-xml-parser

1
Matansh

on dirait que vous ne pouvez pas récupérer le XML, mais vous pouvez obtenir le texte brut; utilisez response.text() au lieu de response.json(). vous aurez toujours besoin de traiter le texte en XML

1
Aaron Saunders

J'ai utilisé une combinaison de 2 paquets. Dans mon cas d'utilisation, j'ai dû analyser la réponse d'une requête SOAP:

Le premier package est - React Native XML2JS La raison de son utilisation et non XML2JS est que je recevais une erreur de React Native ne prend pas en charge la bibliothèque standard de noeud . (J'utilise aussi expo.) 

Le deuxième paquet que j'ai réellement utilisé pour l'analyse est - XML-JS . Je devais utiliser le premier package car j'obtenais la même erreur de React Native ne prenant pas en charge la bibliothèque standard de noeud. J'ai utilisé cela parce que cela donnait un résultat plus structuré dans le cas d'une réponse XML volumineuse.

0
Sahil Khurana