2016-05-16 34 views
5

我正在開發一個由react-native的移動應用程序,我必須調用一個odata服務,它返回XML,我需要將其轉換爲json對象。如何在反應本機中使用XML響應

我該怎麼做?

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(),並把它傳遞給它轉換xmljson但問題是這種方法需要xml objecttext()返回字符串的另一種方法,我無法找到react-native方式將string轉換爲xml

p.s.由於陣營本地使用JavaScriptCore,這僅僅是一個JavaScript解釋器,所以沒有瀏覽器對象模型,沒有文檔對象,沒有窗戶,等可用於

回答

1

您可以使用任何xml2js圖書館有在節點的境界,比如https://github.com/Leonidas-from-XIV/node-xml2js

+1

我得到的安裝它,'在失敗[email protected]安裝腳本「節點GYP rebuild''這個錯誤,我不可能解決它:( – RezaRahmati

+0

對不起,我挑錯的一個。我編輯了答案,請看看這一個 –

+0

是的,我發現昨天有一個它轉換爲json,但輸出json對象不好,它將值轉換爲數組,所以我得到一個簡單的字符串,我需要從數組中讀取它。順便說一句,謝謝 – 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}); 
},