2013-05-15 169 views
0

我有以下格式的XML文件,使用JavaScript解析XML字符串

在Data1陣列,我得到第一個'webportal:highResUrl的價值,但不是所有的值(即「webportal:highResUrl」包含2值)。我在data1數組中獲得重複的值。

<root> 
<item> 
<webportal:files> 
    <webportal:highResUrl>http://xxx.xom/image</webportal:highResUrl> 
    <webportal:highResUrl>http://xxx.xom/image</webportal:highResUrl>  
</webportal:files> 
</item> 
<item> 
<webportal:files> 
    <webportal:highResUrl>http://xxx.xom/image</webportal:highResUrl> 
    <webportal:highResUrl>http://xxx.xom/image</webportal:highResUrl>  
</webportal:files> 
</item> 
</root> 



var data = []; 
    var data1=[]; 
    var xhr = Ti.Network.createHTTPClient();   
    xhr.onload = function() 
    {  
      var doc = this.responseXML.documentElement; 
      var items = doc.getElementsByTagName("item");  
      for (var c=0;c<items.length;c++) 
      {     
       var item = items.item(c); 
       var sTitle1 = item.getElementsByTagName("title").item(0).text; 
       var itemswebportal=item.getElementsByTagName("webportal:files"); 

        for(var j=0;j<itemswebportal.length;j++){ 

         var sTeamHighResouImage = item.getElementsByTagName("webportal:highResUrl").item(0).text 
         data1.push({ 
         path: sTeamHighResouImage, 
         });    
        }}} 
    }; 
    xhr.send(); 

回答

1

因爲你是從<webportal:highResUrl>

item.getElementsByTagName("webportal:highResUrl").item(0).text 

上面一行只返回的第一個<webportal:highResUrl>文本只得到一個值。這似乎是一個靜態所以只是使它在一個循環來獲取所有值

for(var j=0;j<itemswebportal.length;j++){ 
    for(var k=0;k<item.getElementsByTagName("webportal:highResUrl").length;k++) 
        { 
         var sTeamHighResouImage = item.getElementsByTagName("webportal:highResUrl").item(k).text 
         data1.push({ 
         path: sTeamHighResouImage, 
         });    
        }} 
+0

ü可以給我一個解決方案(即如何循環) – vishnu

+0

@vishnu編輯.... –

+0

感謝ü。 。 我在做 – vishnu