[英]responseXML return null. I'm trying to extract data from an xml file and place it on a site (example from w3schools)
我正在尝试从XML文件中提取数据并将其发布到网站上(例如来自w3schools)。 事实是我在本地工作,也就是说,我不会爬到另一个领域。 也许我做错了什么。 可能需要指定Http标头。 所以,由于我是编程新手,我不太了解编程的基础知识。
我试图将xml的答案包装成文本。 我运行了一个具有高级功能的浏览器
//THIS = XML, date = 06.05.2019 (in myFunction come null from
//responseXML)
let xhttp = new XMLHttpRequest();
function loadDoc() {
xhttp.open("GET", "xmls/"+date+".xml", true);
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myFunction(this);
}
};
xhttp.send();
}
function myFunction(xml) {
var i;
//xmlDoc = new DOMParser().parseFromString(xhttp.responseXML, 'text/xml');
var xmlDoc = xml.responseXML;
console.log(xml);
var table="<tr><th>name</th><th>value</th></tr>";
var x = xmlDoc.getElementsByTagName("Valute");
for (i = 0; i <x.length; i++) {
table += "<tr><td>" +
x[i].getElementsByTagName("Name")[0].childNodes[0].nodeValue +
"</td><td>" +
x[i].getElementsByTagName("Value")[0].childNodes[0].nodeValue +
"</td></tr>";
}
document.getElementById("demo").innerHTML = table;
}
我希望responseXML不会是Null
编辑:
好的,所以这不是请求。 这是无效的XMl。
默认XML文件只能有一个根元素,其中XML样本包含多个<Valute>
标记,并且没有用于验证的模式。 因此,如果你将那些<Valute>
包装在一个单独的根标签中,一切都适合我:
<?xml version="1.0"?>
<Valutes>
<Valute>
<Name>USD</Name>
<Value>1.7</Value>
</Valute>
<Valute>
<Name>EURO</Name>
<Value>1.9026</Value>
</Valute>
<Valute>
<Name>Australia</Name>
<Value>1.1884</Value>
</Valute>
<Valute>
<Name>Argentina</Name>
<Value>0.0382</Value>
</Valute>
<Valute>
<Name>Belorus</Name>
<Value>0.8046</Value>
</Valute>
</Valutes>
然后,请求将.xml
文件解析为XML文档,而不对其余代码进行任何更改。 所以当我在console.log() xhttp.responseXML
,我得到[object XMLDocument]
及其内容。
我使用以下代码进行测试,包含上面的XML的xmltest.xml文件。
var xhttp = new XMLHttpRequest();
xhttp.open( 'GET', 'http://www.someserver.com/resources/xmltest.xml', true );
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
alert( 'got response' );
console.log( xhttp.responseXML );
}
};
xhttp.send();
PS:客户端和服务器上的MIME类型仍然必须正确。 但是应该原生支持XML。
PPS:上一个答案中我的PS仍然有效。 通过在服务器上解析XML到JSON而不是在客户端上使用XML来获得更好的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.