Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在页面加载时从XML文件获取数据_Javascript_Html_Xml - Fatal编程技术网

Javascript 在页面加载时从XML文件获取数据

Javascript 在页面加载时从XML文件获取数据,javascript,html,xml,Javascript,Html,Xml,这是我第一次接触xml,显然事情并非如此。我有一个xml文件,需要用javascript从中检索数据。该文件的内容如下: <?xml version="1.0" encoding="utf-8"?> <data> <Texts> <Price><![CDATA[50 $]]></Price> <CTA_text><![CDATA[MORE INFORMATION]]&

这是我第一次接触xml,显然事情并非如此。我有一个xml文件,需要用javascript从中检索数据。该文件的内容如下:

<?xml version="1.0" encoding="utf-8"?>
<data>
    <Texts>
        <Price><![CDATA[50 $]]></Price>
        <CTA_text><![CDATA[MORE INFORMATION]]></CTA_text>
    </Texts>
</data>

我必须在加载时将数据从它检索到我的html页面。
所以问题是:如何从xml中获取50美元或更多的信息文本?

尝试使用javascript xml解析器。这很容易。以下是一个例子:


var xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
如果(xhttp.readyState==4&&xhttp.status==200){
myFunction(xhttp);
}
};
open(“GET”,“books.xml”,true);
xhttp.send();
函数myFunction(xml){
var xmlDoc=xml.responseXML;
document.getElementById(“demo”).innerHTML=
xmlDoc.getElementsByTagName(“标题”)[0].childNodes[0].nodeValue;
}

尝试使用javascript XML解析器。这很容易。以下是一个例子:


var xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
如果(xhttp.readyState==4&&xhttp.status==200){
myFunction(xhttp);
}
};
open(“GET”,“books.xml”,true);
xhttp.send();
函数myFunction(xml){
var xmlDoc=xml.responseXML;
document.getElementById(“demo”).innerHTML=
xmlDoc.getElementsByTagName(“标题”)[0].childNodes[0].nodeValue;
}

您可以使用
XMLHttpRequest()
DOMParser()
for
循环,递归迭代
xml
文档中的所有节点,检查
节点的节点类型是否为
4
,使用
CDATA节的
文本内容
属性检索节点的文本内容

<!DOCTYPE html>
<html>    
  <head>
    <script>
      function iterateNodes(nodes) {
        for (var i = 0; i < nodes.length; i++) {
          if (nodes[i].nodeType === 4) {
            document.body.innerHTML += nodes[i].textContent + "<br>"
          };
            if (nodes[i].childNodes.length) {
              iterateNodes(nodes[i].childNodes)
            }
          }
      }
      window.addEventListener("load", function() {           
        var request = new XMLHttpRequest();
        request.addEventListener("load", function() {
          var parser = new DOMParser(); 
          var xml = parser.parseFromString( this.response, "text/xml" )
          var nodes = xml.documentElement.childNodes;
          iterateNodes(nodes)              
        });
        request.open("GET", "data.xml");
        request.send();
      })
    </script>
  </head>    
  <body>      
  </body>    
</html>

函数迭代器节点(节点){
对于(var i=0;i”
};
if(节点[i].childNodes.length){
迭代节点(节点[i].childNodes)
}
}
}
addEventListener(“加载”,函数(){
var request=new XMLHttpRequest();
addEventListener(“加载”,函数(){
var parser=新的DOMParser();
var xml=parser.parseFromString(this.response,“text/xml”)
var nodes=xml.documentElement.childNodes;
迭代节点(节点)
});
open(“GET”,“data.xml”);
request.send();
})

plnkr

您可以使用
XMLHttpRequest()
DOMParser()
循环,递归迭代
xml
文档中的所有节点,检查
节点的节点类型是否为
4
,使用
.textContent
节CDATA
的属性检索节点的文本内容

<!DOCTYPE html>
<html>    
  <head>
    <script>
      function iterateNodes(nodes) {
        for (var i = 0; i < nodes.length; i++) {
          if (nodes[i].nodeType === 4) {
            document.body.innerHTML += nodes[i].textContent + "<br>"
          };
            if (nodes[i].childNodes.length) {
              iterateNodes(nodes[i].childNodes)
            }
          }
      }
      window.addEventListener("load", function() {           
        var request = new XMLHttpRequest();
        request.addEventListener("load", function() {
          var parser = new DOMParser(); 
          var xml = parser.parseFromString( this.response, "text/xml" )
          var nodes = xml.documentElement.childNodes;
          iterateNodes(nodes)              
        });
        request.open("GET", "data.xml");
        request.send();
      })
    </script>
  </head>    
  <body>      
  </body>    
</html>

函数迭代器节点(节点){
对于(var i=0;i”
};
if(节点[i].childNodes.length){
迭代节点(节点[i].childNodes)
}
}
}
addEventListener(“加载”,函数(){
var request=new XMLHttpRequest();
addEventListener(“加载”,函数(){
var parser=新的DOMParser();
var xml=parser.parseFromString(this.response,“text/xml”)
var nodes=xml.documentElement.childNodes;
迭代节点(节点)
});
open(“GET”,“data.xml”);
request.send();
})

哦,你能解释一下这里发生了什么吗?在评论中?@NeedHate从
XMLHttpRequest
响应创建
xml
文档
;递归迭代
xml
文档中的节点
;如果当前迭代的node
.nodeType
是nodeOh的
4
retrieve
.textContent
属性,您能解释一下这里发生了什么吗?在评论中?@NeedHate从
XMLHttpRequest
响应创建
xml
文档
;递归迭代
xml
文档中的节点
;如果当前迭代的节点
.nodeType
4
则检索
.textContent
节点的属性