Javascript XML数据只显示其中的一部分

Javascript XML数据只显示其中的一部分,javascript,xml,titanium,tableview,titanium-mobile,Javascript,Xml,Titanium,Tableview,Titanium Mobile,因此,我试图从XML文件中获取数据,但当我循环遍历它并想得到“countyname”时,我只得到第一个,然后它就停止了。XMl有错吗?因为我尝试了使用其他XML,这与将数据放入tableview的代码配合得很好。 顺致敬意, 菲利普 country.js代码: Ti.include('app_functions.js'); var win = Titanium.UI.currentWindow; // create a table to display news feeds---------

因此,我试图从XML文件中获取数据,但当我循环遍历它并想得到“countyname”时,我只得到第一个,然后它就停止了。XMl有错吗?因为我尝试了使用其他XML,这与将数据放入tableview的代码配合得很好。 顺致敬意, 菲利普

country.js代码:

Ti.include('app_functions.js');

var win = Titanium.UI.currentWindow;

// create a table to display news feeds--------------------------------
var itemsTable = Ti.UI.createTableView({
top : '11%',
left : 0,
leftImage : 'taxi.png',
backgroundColor : '#DCEEDC', //E1E6EE
bottom : '0%',
// search : searchBar,
filterAttribute : 'searchFilter'
});
win.add(itemsTable);

// define xmlFeed (you can customize this with any RSS feed)
var xmlFeed = 'http://eventverket.nu/test/test5.xml';
//'http://83.254.164.137:1000/test.xml';

// create a new HTTP client object
var xhr = Ti.Network.createHTTPClient();

// this method will process the remote data
xhr.onload = function() {

// create an xml object
var xml = this.responseXML;

// create an array that will store news items for our tableView
var data = [];
var data = [];
var items = xml.documentElement.getElementsByTagName("county");
for (var i=0; i<items.length; i++) {
var row = Ti.UI.createTableViewRow({
    title: items.item(i).getTextContent()
}); 
data.push(row); 
}
itemsTable.data = data;

// when the user clicks on a row
itemsTable.addEventListener('click', function(e) {

// NEW WINDOW
var newWindow = Titanium.UI.createWindow({
    backgroundColor : '#DCEEDC', //E1E6EE
    statusBarStyle : Ti.UI.iPhone.StatusBar.LIGHT_CONTENT,
    font : fonts[16]['normal'],
    url : "stad.js",
    //backButtonTitle: 'Back',
    //title: e.source.title,
    tabBarHidden : true,
    navBarHidden : true,
    tintColor : '#FFF'
    });

    newWindow.open();
   });

};

// this method will be called if there is an error in accessing the     data
xhr.onerror = function() {
    // hide activity indicator
activityIndicator.hide();

// display error
alert(this.status + ': ' + this.statusText);
return false;
};

// open the remote feed
xhr.open('GET', xmlFeed);

// execute the call to the remote feed
xhr.send();
Ti.include('app_functions.js');

var newWin = Titanium.UI.currentWindow;



// create a table to display news feeds--------------------------------
var itemsTable = Ti.UI.createTableView({
top : '11%',
left : 0,
leftImage : 'taxi.png',
backgroundColor : '#DCEEDC', //E1E6EE
bottom : '0%',
// search : searchBar,
filterAttribute : 'searchFilter'
});
win.add(itemsTable);

// define xmlFeed (you can customize this with any RSS feed)
var xmlFeed = 'http://eventverket.nu/test/test5.xml';
//'http://83.254.164.137:1000/test.xml';

// create a new HTTP client object
var xhr = Ti.Network.createHTTPClient();

// this method will process the remote data
xhr.onload = function() {

// create an xml object
var xml = this.responseXML;

// create an array that will store news items for our tableView

var data = [];



var items = xml.documentElement.getElementsByTagName("city");
for (var i=0; i<items.length; i++) {
var row = Ti.UI.createTableViewRow({
    title: items.item(i).getTextContent() //
}); 
data.push(row); 
}
itemsTable.data = data;





// when the user clicks on a row
itemsTable.addEventListener('click', function(e) {

// NEW WINDOW
var newWindow = Titanium.UI.createWindow({
    backgroundColor : '#DCEEDC', //E1E6EE
    statusBarStyle : Ti.UI.iPhone.StatusBar.LIGHT_CONTENT,
    font : fonts[16]['normal'],
    url : "stad.js",
    //backButtonTitle: 'Back',
    //title: e.source.title,
    tabBarHidden : true,
    navBarHidden : true,
    tintColor : '#FFF'
    });


 });

};

// this method will be called if there is an error in accessing the data
xhr.onerror = function() {
// hide activity indicator
activityIndicator.hide();

// display error
alert(this.status + ': ' + this.statusText);
return false;
};

// open the remote feed
xhr.open('GET', xmlFeed);

// execute the call to the remote feed
xhr.send();
Ti.include('app_functions.js');
var win=tianium.UI.currentWindow;
//创建一个表来显示新闻提要--------------------------------
var itemsTable=Ti.UI.createTableView({
排名前:“11%”,
左:0,,
左图:“taxi.png”,
背景色:“#DCEEDC”,//E1E6EE
底部:“0%”,
//搜索:搜索栏,
filterAttribute:'searchFilter'
});
win.add(itemsTable);
//定义xmlFeed(您可以使用任何RSS源自定义此内容)
var xmlFeed=http://eventverket.nu/test/test5.xml';
//'http://83.254.164.137:1000/test.xml';
//创建新的HTTP客户端对象
var xhr=Ti.Network.createHTTPClient();
//此方法将处理远程数据
xhr.onload=函数(){
//创建一个xml对象
var xml=this.responseXML;
//创建一个数组,用于存储tableView的新闻项
var数据=[];
var数据=[];
var items=xml.documentElement.getElementsByTagName(“县”);
对于(var i=0;i检查xml

开始于

<food_company>
   <county>

   </lan>
</food_company>

您的代码逻辑错误。让我解释一下原因……我将对您的代码进行注释,最后您将了解它的错误所在

var items = xml.documentElement.getElementsByTagName("county");
通过这行代码,您将获得XML文件的所有“county”元素。在您的示例中,只有一个元素。因此
items
是一个
节点。List
只包含一个元素

for (var i=0; i<items.length; i++) {
    ... 
}

我的代码只是得到一个标签名为“countyname”的所有元素的列表根据您的XML文件,
items
将是一个
节点。列表
包含两个元素。然后使用
for
语句,可以从列表中每个节点的文本内容创建新行!

您认为这个问题在不知道代码的情况下可以回答吗?否。问题寻求调试帮助(“为什么这个代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。没有明确问题陈述的问题对其他读者来说是没有用的。嗨,Michael!很抱歉,我没有想清楚!我的代码来了:以下是我获取XML数据的方式:
var items=XML.documenElement.getElementsByTagName(“county”);
//循环遍历(var i=0;i
//为每个项目创建一个表行
});
我试图在你的问题中对其进行编辑,如果有错误,请更正。无论何时提出问题,请始终在问题中包含你的代码。这将有助于你得到答案。此外,不要使用
documentElement.getElementsByTagName(“county”)
用于解析xml。npm上有很多xml解析器可能会对您有所帮助,例如,看一看感谢您花时间@michael!我不确定我能看到您更改了什么,您能再写一次吗?我一定会看一看github链接:)嗨@roy!对不起,这是我的错误!我把它从瑞典语翻译过来,只是忘了把“lan”(郡)翻译成英语来回答stackoverflow问题。我无法对他的帖子发表评论,我想这可能会对他有所帮助……所以发到这里非常感谢@Riccardo Bucco!这很有效!但我还有一个问题!当我按下“纽约”按钮时"我只想看到纽约市的
,但现在两个城市名称都出现了,有办法做到这一点吗?向菲利比致以最良好的问候,不客气!但请给我们看一下你的代码:没有它是不可能帮到你的!我不知道你是如何尝试实现它的。既然当前的问题已经解决,请将我的答案标记为接受。不是然后,用另一个问题的细节来回答另一个问题:记住要尽可能多地向我们提供细节,这样才有可能帮助你(并向我们展示你已经做了什么!!)你好@Riccardo Bucco!现在我添加了我所有的代码!我想做的是:获取所有的国家,然后按一个县,获取该县的所有城市。我不能按“向上箭头”,因为我没有15分:/Best advisions。Filipricardo Bucco查看我的新帖子:
var items = xml.documentElement.getElementsByTagName("county");
for (var i=0; i<items.length; i++) {
    ... 
}
var data = [];
var items = xml.documentElement.getElementsByTagName("countyname");
for (var i=0; i<items.length; i++) {
    var row = Ti.UI.createTableViewRow({
        title: items.item(i).getTextContent()
    }); 
    data.push(row); 
}
itemsTable.data = data;