web-dev-qa-db-de.com

React-Native holt XML-Daten

Ich bin neu bei React-Native. Versuchen, einige sehr einfache Apps zu erstellen. Kann nicht herausfinden, wie man XML-Daten abruft. Mit JSON ist alles klar und einfach. 

Aber wie holt man XML? Versuchte, es mit this und einigen anderen ähnlichen Skripten in JSON zu konvertieren, jedoch ohne Erfolg. Brauche Hilfe :/

Mein Code sieht sehr einfach aus:

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

sie können https://github.com/connected-lab/react-native-xml2js ausprobieren.

    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)
        })

Ich benutze es für mein Projekt.

7
lam luu

sie können npm verwenden, um xmldom zu installieren. Laden Sie DOMParser jetzt wie folgt:

var DOMParser = require('xmldom').DOMParser

Ich benutze es für mein Projekt.

5
kai

Zunächst einmal - React Native mit JavaScriptCore, das nur ein Javascript-Interpreter ist, also kein Browser-Objektmodell, kein Dokumentobjekt, kein Fenster usw. Aus diesem Grund können Sie beispielsweise DOMParser nicht verwenden. 

React bietet zwar einen XMLHttpRequest wrapper an, aber responseXML nicht.

Ich habe keine Lösung dafür gefunden, also habe ich gerade meine eigene Bibliothek dafür erstellt: reag-native-xml die es Ihnen erlaubt, XML zu parsen und XPath-Abfragen dafür zu machen:

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

Ich benutze React-Native und ich mochte xmldom nicht wirklich. Ich habe meinen eigenen reaktionsnativen XML-Parser geschrieben. Sie können dies unter https://www.npmjs.com/package/react-xml-parser überprüfen

1
Matansh

es sieht so aus, als könnten Sie XML nicht zurückbekommen, aber Sie können den rohen Text erhalten. Verwenden Sie response.text() anstelle von response.json(). Sie müssen den Text immer noch in XML verarbeiten

1
Aaron Saunders

Ich habe eine Kombination von 2 Paketen verwendet. In meinem Anwendungsfall musste ich die Antwort einer SOAP - Anforderung analysieren:

Das erste Paket ist - React Native XML2JS Der Grund für die Verwendung von und nicht XML2JS ist, dass ich einen Fehler von React Native erhielt, der keine Knotenstandardbibliothek unterstützt . (Ich benutze auch expo.) 

Das zweite Paket, das ich tatsächlich zum Parsen verwendet habe, ist - XML-JS . Ich musste das erste Paket verwenden, da ich den gleichen Fehler von React Native erhielt, der keine Knotenstandardbibliothek unterstützte. Ich habe dies verwendet, weil es bei einer großen XML-Antwort zu einem strukturierteren Ergebnis führte.

0
Sahil Khurana