2016-05-16 23 views
5

react-native tarafından bir mobil uygulama geliştiriyorum, XML döndüren bir oda servisi çağırmam gerekiyor ve bunu json nesnesine dönüştürmem gerekiyor.Tepki-yerelinde XML yanıtı nasıl kullanılır

Bunu nasıl yapmalıyım?

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

yerine json() üzerinde text() almak ve json için xml dönüştürür ancak sorun yöntemi xml object ama text() döner dize ihtiyacı var başka yönteme geçmek çalıştı ve ben react-native bir yol bulamadı string'u xml'a dönüştürmek.

p.s. Yana Tepki Yerli örnek https://github.com/Leonidas-from-XIV/node-xml2js için sadece bir javascript vb tercüman, dolayısıyla Tarayıcı Nesne Modeli, hiçbir belge nesnesi, hiçbir pencere,

cevap

1

Sen düğüm aleminde olduğu herhangi xml2js kütüphanesini kullanabilir kullanılabilir olduğu JavaScriptCore, kullanma

Daniel Schmidt'in cevabın doğru olmasına rağmen, bu makalede açıklanan şekilde kullanılan
+1

Senaryonun 'düğüm-gyp rebuild'' yüklemek [email protected] de başarısız 'yüklemeden bu hatayı alıyorum ve bunu çözememiştir :( – RezaRahmati

+0

Üzgünüm, aldı yanlış olan. Ben cevabını düzenledim, lütfen bu bir göz atın –

+0

Evet, bir dün gördüm ve json dönüştürür ama çıkış json nesnesi iyi değil, bu değer diziye dönüştürür, bu yüzden ihtiyacım var basit bir dize almak için diziden oku. BTW teşekkürler – RezaRahmati

1

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