如何使用javascript从xml文件中获取子节点值
我可以从下面的XML中获取如何使用javascript从xml文件中获取子节点值,javascript,xml,Javascript,Xml,我可以从下面的XML中获取标记值,但无法获取所有值: <?xml version='1.0' encoding='ISO-8859-1'?> <gallery> <name>abc</name> <email><![CDATA[smith@email.com]]></email> <images> <image> <url><![CDAT
标记值,但无法获取所有
值:
<?xml version='1.0' encoding='ISO-8859-1'?>
<gallery>
<name>abc</name>
<email><![CDATA[smith@email.com]]></email>
<images>
<image>
<url><![CDATA[g2pic3.jpg]]></url>
<caption><![CDATA[Red Sun]]></caption>
</image>
<image>
<url><![CDATA[g2pic4.jpg]]></url>
<caption><![CDATA[Eiffel Tower]]></caption>
</image>
</images>
</gallery>
abc
这是我的javascript代码。我想获取中包含的所有值
标签,但我在使用此部件时遇到问题
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
myFunction(xhttp);
}
}
xhttp.open("GET", "template.xml", true);
xhttp.send();
function myFunction(xml) {
var xmlDoc = xml.responseXML;
nameList = xmlDoc.getElementsByTagName("name");
var nameList = nameList[0].childNodes;
document.getElementById("demo").innerHTML = xmlDoc.getElementsByTagName("name")[0].childNodes[0].nodeValue;
}
//xmlDoc.getElementsByTagName("gallery").item(0).firstChild.nodeValue;
</script>
</body>
</html>
var xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
如果(xhttp.readyState==4&&xhttp.status==200){
myFunction(xhttp);
}
}
open(“GET”,“template.xml”,true);
xhttp.send();
函数myFunction(xml){
var xmlDoc=xml.responseXML;
nameList=xmlDoc.getElementsByTagName(“名称”);
var nameList=nameList[0]。子节点;
document.getElementById(“demo”).innerHTML=xmlDoc.getElementsByTagName(“名称”)[0]。childNodes[0]。nodeValue;
}
//xmlDoc.getElementsByTagName(“gallery”).item(0).firstChild.nodeValue;
很肯定有更好的解决方案。我那朴素的旧js有点生锈了
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
myFunction(xhttp);
}
}
xhttp.open("GET", "template.xml", true);
xhttp.send();
function myFunction(xml) {
var xmlDoc = xml.responseXML;
// Create a object gallery to store the values.
var gallery = {};
gallery.name = xmlDoc.getElementsByTagName("name")[0].childNodes[0].nodeValue;
gallery.email = xmlDoc.getElementsByTagName("email")[0].childNodes[0].nodeValue;
// Put all image elements into xmlImages
var xmlImages = xmlDoc.getElementsByTagName("image");
// Add an empty array to gallery
gallery.image = [];
// Iterate over all images in xmlImages
for(var i = 0; i < xmlImages.length; i++) {
var xmlImage = xmlImages[i];
// Create an new object and add url and caption values to it
var image = {};
image.url = xmlImage.getElementsByTagName("url")[0].childNodes[0].nodeValue;
image.caption = xmlImage.getElementsByTagName("caption")[0].childNodes[0].nodeValue;
// Add the image object to the gallery.image array
gallery.image.push(image);
}
// Quick and dirty, create a string with html tag to present the result
var html = "name: " + gallery.name + "<br>" +
"email: " + gallery.email + "<br>" +
"images:<br><ul>";
for(var i = 0; i < gallery.image.length; i++) {
html += "<li>image" + i + ":<br>";
html += "<ul><li>url: " + gallery.image[i].url + "</li>";
html += "<li>caption: " + gallery.image[i].caption + "</li></ul>";
}
html += "</ul>";
document.getElementById("demo").innerHTML = html;
}
</script>
</body>
</html>
var xhttp=newXMLHttpRequest();
xhttp.onreadystatechange=函数(){
如果(xhttp.readyState==4&&xhttp.status==200){
myFunction(xhttp);
}
}
open(“GET”,“template.xml”,true);
xhttp.send();
函数myFunction(xml){
var xmlDoc=xml.responseXML;
//创建对象库以存储值。
var gallery={};
gallery.name=xmlDoc.getElementsByTagName(“名称”)[0]。子节点[0]。节点值;
gallery.email=xmlDoc.getElementsByTagName(“电子邮件”)[0]。子节点[0]。节点值;
//将所有图像元素放入xmlImages
var xmlmages=xmlDoc.getElementsByTagName(“图像”);
//将空数组添加到库中
gallery.image=[];
//迭代xmlImages中的所有图像
对于(var i=0;i”+
“电子邮件:“+gallery.email+”
“+
“图像:
”;
对于(变量i=0;i图像”+i+:
”;
html+=“- url:“+gallery.image[i].url+”
”;
html+=“- 标题:“+gallery.image[i].标题+”
”;
}
html+=“
”;
document.getElementById(“demo”).innerHTML=html;
}
我很高兴能帮上忙