Javascript 在页面加载时从XML文件获取数据
这是我第一次接触xml,显然事情并非如此。我有一个xml文件,需要用javascript从中检索数据。该文件的内容如下: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 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
节点的属性