2015-04-22 36 views
16

React-Native için yeni. Bazı çok basit uygulamalar yapmaya çalışıyorum. XML verilerinin nasıl alınacağını anlayamıyorum. JSON ile her şey açık ve basittir.React-Native getirme XML verileri

XML nasıl alınır? this ve diğer bazı benzer komutlar aracılığıyla JSON'a dönüştürmek için çalıştı, ancak herhangi bir başarı olmadan./

Kodum çok basit görünüyor: yardıma mı ihtiyacınız geri XML alamayan ancak ham metni alabilirsiniz gibi

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> 
    ); 
    }, 
}); 
+1

'response.text()' – potench

+0

kullanmayı deneyin. Aynı problemle karşılaştım. Orada saf bir JS XML ayrıştırıcısı yok mu? – nicholas

cevap

2

üzerinde

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

kontrol edebilirsiniz.

1

bakar; response.json() yerine response.text() kullanın.

var DOMParser = require('xmldom').DOMParser 

Projemde için kullanabilirsiniz: Artık aşağıda DOMParser yüklemek, xmldom yüklemek UÖM'sini kullanabilirsiniz hala xml

+0

Evet, response.text() düzgün çalışıyor, ancak xml işlemine metinle ilgili bir sorun var. Örneğin [bu] tüm çözümleri (http://stackoverflow.com/questions/17604071/parse-xml-using-javascript) yanıtları döndürür null veya error :( – Toon

+0

Ayrıca "Değişken bulamıyorum: DOMParser() "yeni DOMParser() kullanırken – Toon

5

metin işlemek gerekir.

+0

Herkes özel olarak React Native içinde xmldom kullanmayı denedi mi? –

+1

Demo projemde kullanıyorum. https://github.com/kaich/ASReact/blob /master/App/Main/TypePage.js – kai

+0

Hem Android'i hem de iOS'u destekliyor mu? –

2

Her şeyden önce - Bir javascript yorumlayıcısı olan JavaScriptCore'u kullanarak React Native, yani Tarayıcı Nesne Modeli, belge nesnesi yok, pencere yok, vb. Bu nedenle DOMParser'u kullanamazsınız.

Gerçekten React size bir XMLHttpRequest sarıcı sağlar, ancak responseXML'u içermez.

Bunun için herhangi bir çözüm buldum yoktu, bu yüzden ben sadece bunun için kendime bir kütüphane oluşturduk:

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 
+1

Çok güzel bir çözüm ancak Android'i desteklemiyor gibi görünüyor.Yani hala orada aynı problem olurdu. –

-1

vardı: Eğer xml ayrıştırmak ve bunun için XPath sorguları yapmanızı sağlar react-native-xml öğrendiğim önce aynı sorunu ben böyle yapabileceği birkaç saat geçirmek:

const GOOGLE_FEED_API_URL = "https://ajax.googleapis.com/ajax/services/feed/load?v=1.0&num=-1&q=" 
let url = GOOGLE_FEED_API_URL + encodeURIComponent(<yoururl>); 

fetch(url).then((res) => res.json()); 

yardımcı olur Umut!

+1

Bu nasıl oluyor? Tamamen farklı bir soruya cevap veriyor; URL'yi get parametresi olarak nasıl gönderilir. –

+0

Sanırım bir XML dosyasını JSON'a dönüştürmek için bir Google hizmeti kullanıyor… –

İlgili konular