2017-02-21 77 views
1

我有一个需要使用Javascript读取的XML文件。将要阅读的文本需要在3个标签标签内显示。仅使用Javascript阅读XML文件

我可以读取XML文件,但是当我试图显示3个标签内的文本时,它只显示我从XML文件中读取的最后一件东西,在这种情况下是“Pavarotti Gala Concert”。

我希望能够打印:

标签1 = “帝国滑稽表演”

标签2 = “隐藏你的心脏”

标签3 = “帕瓦罗蒂庆典音乐会”

我在做什么错?

XML文件

<?xml version="1.0" encoding="UTF-8"?> 
<CATALOG> 
    <CD> 
     <TITLE>Empire Burlesque</TITLE> 
     <ARTIST>Bob Dylan</ARTIST> 
    </CD> 
    <CD> 
     <TITLE>Hide your heart</TITLE> 
     <ARTIST>Bonnie Tyler</ARTIST> 
    </CD> 
    <CD> 
     <TITLE>Pavarotti Gala Concert</TITLE> 
     <ARTIST>Luciano Pavarotti</ARTIST> 
    </CD> 
</CATALOG> 

JAVASCRIPT

 if (window.XMLHttpRequest) { 
      xmlhttp = new XMLHttpRequest(); 
     } else { 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 

     xmlhttp.open("GET", "text.xml", false); 
     xmlhttp.send(); 
     xmlDoc = xmlhttp.responseXML; 

     var x = xmlDoc.getElementsByTagName("CD"); 

     for (i = 0; i < x.length; i++) { 

      var titleName = x[i].getElementsByTagName("TITLE")[0].innerHTML; 

      document.getElementById("text1").innerHTML = titleName ; 
      document.getElementById("text2").innerHTML = titleName ; 
      document.getElementById("text3").innerHTML = titleName ; 
    }  
} 

HTML

<label id="text1"></label> 
<label id="text2"></label> 

回答

1

我可以读取XML文件,但是当我尝试显示 3标签中的文本时,它只显示我从XML文件 (本例中为“Pavarotti Gala Concert”)中读取的最后一件东西。

在你设置titleName所有的text1text2text3循环,因此是有道理的,他们都等于最后一个项目。

尝试更换:

document.getElementById("text1").innerHTML = titleName ; 
document.getElementById("text2").innerHTML = titleName ; 
document.getElementById("text3").innerHTML = titleName ; 

有:

document.getElementById("text" + (i + 1)).innerHTML = titleName; 

编辑

var titleName = x[i].getElementsByTagName("TITLE")[0].innerHTML; 

if (tileName.indexOf('hide') !== -1) { 
    document.getElementById("text1").innerHTML = "Hide your heart"; 
    document.getElementById("text2").innerHTML = ""; 
    document.getElementById("text3").innerHTML = ""; 
    break; // stop looping 
} 
+0

非常感谢。我不知道我可以使用(“文本”+(i + 1))。 – AnotherUser

+0

有一个问题......是否有可能读取xml并检查单词“隐藏”并仅显示标题“隐藏你的心”而不显示其他人? – AnotherUser

+1

@AnotherUser我编辑了我的答案。我认为这将做你想做的事。 – Jack