【发布时间】:2018-05-28 07:38:33
【问题描述】:
我正在尝试从 XML 文件中获取 XML 数据,并希望将某些节点值保存在列表中。这就是我尝试这样做的方式:
import React from "react";
class EditFiles extends React.Component {
constructor(props) {
super(props);
this.loadXML = this.loadXML.bind(this);
}
loadXML = () => {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var xmlDoc = this.responseXML;
var y = xmlDoc.getElementsByTagName("newFile");
for(var i=0; i<y.length; i++) {
var NameArray = [y[i].getElementsByTagName("FileName")[0]];
}
const nameList = NameArray.map(name =>
<li>{name}</li>
);
}
};
xhttp.open("GET", "./FilenameList.xml", true);
xhttp.send();
}
render() {
return(
<ul>{nameList}</ul>
);
}
}
首先,我不知道是否可以这样做。我确实发现了类似的问题,但是,答案中的代码没有得到很好的解释,我不想在不理解的情况下复制和粘贴一些代码(另外,即使我想这样做,我也可能做不到,因为我不知道什么代表什么。
我使用此代码得到的错误是 nameList 未在渲染函数中定义。我知道它必须是一个全局函数,但我不知道该怎么做。
我还阅读了这篇文章:https://medium.com/@catquarks/making-ajax-requests-with-react-48be0285d396,并希望像示例中那样做。但是我不是很明白,例如,我如何获取某些标签的值?
无论如何,总结一下我对这个问题的目标:我可以像以前那样使用 XMLHttpRequest 吗?我到底犯了什么错误?
我希望这不是到处都是。如果您需要更多信息/解释,请告诉我。
快速编辑:XML 文件看起来像这样:
<Files>
<newFile>
<FileName>file1</FileName>
</newFile>
<newFile>
<FileName>file2</FileName>
</newFile>
</Files>
我还要注意的是,xml 文件是动态创建的,因此无法预测会有多少 newFile 节点。
【问题讨论】:
标签: javascript reactjs xmlhttprequest