我在React Native App中工作,只是试图执行这段代码
fetch('https://ad13.adfarm1.adition.com/banner?sid=3915124&wpt=X.xml')
.then((response) => response.text())
.then((responseJson) => {
console.log("WorkingTillHere",responseJson)
xml_Img = new XMLParser().parseFromString(responseJson); // Assume xmlText contains the example XML
console.log("ParserVideo,",xml_Img);
}) .catch((error) => {
console.log("ParserEx",error);
});
我可以在控制台窗口中看到
在这里工作
但是它不执行
XMLParser().parseFromString(responseJson);
并且正在获取控制台日志ParserEx TypeError:无法设置未定义的属性“值”
使用此URL链接
fetch('http://teststream.airtango.de/theo/vast.xml')
,相同的代码可以正常运行 最佳答案
react-xml-parser不了解
<?xml version="1.0" encoding="UTF-8"?>
标头。因此,总的来说,您可以
fetch('https://ad13.adfarm1.adition.com/banner?sid=3915124&wpt=X.xml')
.then((response) => response.text())
.then((xmlText) => {
// remove <?xml ... etc header because react-xml-parser chokes on it
if (xmlText.toLowerCase().substr(0,5) == '<?xml') {
xmlText = xmlText.split(/\?>\r{0,1}\n{0,1}/).slice(1).join('?>\n');
}
console.log("WorkingTillHere",xmlText)
xml_Img = new XMLParser().parseFromString(xmlText); // Assume xmlText contains the example XML
console.log("ParserVideo,",xml_Img);
}) .catch((error) => {
console.log("ParserEx",error);
});
如果前5个字符是
<?xml
...,那么上面的内容只会引起我的注意。但是,我相信react-xml-parser
的作者应在其代码中处理<?xml ... ?>
:p查看xmlParser的源代码,似乎他们确实尝试处理它,但是显然失败了
注意,将xmlParse.js的第8行从
if (tags[i].indexOf('?xml')) {
至
if (tags[i].indexOf('?xml') < 0 && tags[i].length > 0) {
也解决了这个问题:p