繁体   English   中英

responseXML返回null。 我正在尝试从xml文件中提取数据并将其放在网站上(例如来自w3schools)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM