我在尝试从xml文件中获取特定元素时遇到问题。 请参阅下面我使用的javascript代码,然后是xml文件。 更具体地说,当我检索第一个纪念碑元素的标题元素时,它的罚款。问题是当我尝试检索xml文件的第二个纪念碑元素的title元素时。 第二个警报什么都没有。我做错了什么?我的for循环里面有一些错误我猜。
javascript文件
<script>
function loadXMLDoc(doc) {
if (window.XMLHttpRequest){
request = new XMLHttpRequest();
} else {
request = new ActiveXObject("Microsoft.XMLHTTP");
}
request.open("GET",doc,false);
request.send("");
return request.responseXML;
}
function displaypafosmonuments(doc) {
xmlDoc = loadXMLDoc(doc);
pafos=xmlDoc.getElementsByTagName("pafos");
monuments=pafos[0].getElementsByTagName("monuments");
monument=monuments[0].getElementsByTagName("monument");
var title = new Array(3);
for(var k=0;k<2;k++){
title.push(monument[k].getElementsByTagName("title"));
alert(title[k].nodeName);
}
}
</script>
xml文件
<?xml version="1.0" encoding="UTF-8"?>
<data>
<pafos>
<monuments>
<monument>
<username>dimitris</username>
<email>katitis@gmail.com</email>
<title>Colossi Castle</title>
<description>Very nice castle</description>
<image>colossi.jpg</image>
<geolocation></geolocation>
<date>08/03/2014</date>
<time>01:33</time>
</monument>
<monument>
<username>aristi</username>
<email>kati@gmail.com</email>
<title>Castle</title>
<description>Very ugly castle</description>
<image>colossi.jpg</image>
<geolocation></geolocation>
<date>09/03/2014</date>
<time>02:33</time>
</monument>
</monuments>
</pafos>
</data>
答案 0 :(得分:1)
您正在创建一个包含三个空位的数组,然后在循环内推送另外两个项目。现在你的数组有五个元素。但是你读第一个和第二个,它们都是空的。
修复它的一种方法是更改数组声明:
var title = new Array();
现在你将推送元素0和1,并读取元素0和1。
在循环内部,您正在读取title
节点集。你必须得到第一个(也是唯一的)标题元素。
title.push(monument[k].getElementsByTagName("title")[0]);
最后,您的alert()
未访问文本节点。所以这将有效:
警报(标题[K] .childNodes [0] .nodeValue);