2015-04-22 3 views
16

Я новичок в React-Native. Попытка сделать некоторые очень простые приложения. Невозможно выяснить, как получить XML-данные. С JSON все понятно и просто.React-Native fetch XML-данные

Но как получить XML? Пытался преобразовать его в JSON через this и некоторые другие подобные скрипты, но безуспешно. Нужна помощь:/

Мой код выглядит очень просто:

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

Любой ответ на это? Я столкнулся с той же проблемой. Разве нет чистого JS-анализатора XML? – nicholas

ответ

2

вы можете попробовать 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) 
     }) 

Я использую его для моего проекта.

1

выглядит, как вы не можете получить XML обратно, но вы можете получить необработанный текст; используйте response.text() вместо response.json(). вам все равно нужно обрабатывать текст в XML

+0

Да, response.text() отлично работает, но есть проблема с процессом text to xml. Например, все решения из [этих] (http://stackoverflow.com/questions/17604071/parse-xml-using-javascript) ответов возвращают null или ошибку :( – Toon

+0

Также у меня есть «Невозможно найти переменную: DOMParser() «при использовании нового DOMParser(); – Toon

5

вы можете использовать НПМ установить XMLDOM, теперь загрузить DomParser, как показано ниже:

var DOMParser = require('xmldom').DOMParser 

Я использую его для моего проекта.

+0

Кто-нибудь пытался использовать xmldom специально в React Native? –

+1

Я использую его в своем демонстрационном проекте. Вы можете обратиться к демо https://github.com/kaich/ASReact/blob /master/App/Main/TypePage.js – kai

+0

Поддерживает ли он как Android, так и iOS? –

2

Прежде всего - React Native с использованием JavaScriptCore, который является просто интерпретатором javascript, поэтому нет объектной модели браузера, нет объекта документа, нет окна и т. Д. Вот почему вы не можете использовать DOMParser, например.

Действительно, React предоставляет вам обертку XMLHttpRequest, но она не включает responseXML.

я не нашел какое-либо решение для этого, так что я только что создал свою собственную библиотеку для этого: react-native-xml, которая позволяет анализировать XML и сделать XPath запросов для него:

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

Очень красивое решение, но, похоже, оно не поддерживает Android.Таким образом, у вас будет такая же проблема. –

-1

Я имел та же проблема провела за несколько часов до того, как узнала, что смогу сделать это так:

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

Надеюсь, это поможет!

+1

Как это продвигается? Он отвечает на совершенно другой вопрос; как отправить URL-адрес в качестве параметра get. –

+0

Я думаю, что он использует сервис Google для преобразования XML-файла в JSON ... –

0

Я использую native-native, и мне не очень понравился xmldom. Я написал собственный собственный синтаксический анализатор XML. Вы можете проверить его на https://www.npmjs.com/package/react-xml-parser

Смежные вопросы