使用Jquery从XML文件获取第二个元素的列表
我有一个xml文件,我只想从列表中读取第二级元素。例如,我只想有一个车辆列表,如下所示 车辆编号:“180”,类型:“公共汽车” 车辆编号:“190”,类型:“公共汽车” ....... 这是我的xml格式使用Jquery从XML文件获取第二个元素的列表,jquery,xml,Jquery,Xml,我有一个xml文件,我只想从列表中读取第二级元素。例如,我只想有一个车辆列表,如下所示 车辆编号:“180”,类型:“公共汽车” 车辆编号:“190”,类型:“公共汽车” ....... 这是我的xml格式 <departures> <station> <vehicle> <number>180</number> <type>BUS</type> </vehicle>
<departures>
<station>
<vehicle>
<number>180</number>
<type>BUS</type>
</vehicle>
<vehicle>
<number>190</number>
<type>BUS</type>
</vehicle>
</station>
<station>
<vehicle>
<number>290</number>
<type>BUS</type>
</vehicle>
<vehicle>
<number>380</number>
<type>BUS</type>
</vehicle>
</station>
<departures>
180
公共汽车
190
公共汽车
290
公共汽车
380
公共汽车
这是javascript部分
$(document).ready(function(){
$.ajax({
type: "GET",
url: XML_PATH,
dataType: "xml",
success: function(xml) {
$("#update-target").empty();
$(xml).find("station").each(function () {
$("#update-target").append('<ul>');
$(this).find("vehicle").each(function () {
var number = $(this).find('number').text();
var type = $(this).find('type').text();
$("#update-target ul").append('<li>' + type + number + '</li>');
});
});
},
});
});
$(文档).ready(函数(){
$.ajax({
键入:“获取”,
url:XML\u路径,
数据类型:“xml”,
成功:函数(xml){
$(“#更新目标”).empty();
$(xml).find(“station”).each(函数(){
$(“#更新目标”).append(“”);
$(此)。查找(“车辆”)。每个(功能(){
var number=$(this.find('number').text();
变量类型=$(this.find('type').text();
$(“#更新目标ul”).append(“- ”+类型+数字+”
);
});
});
},
});
});
在运行上述代码时,我没有得到任何输出。请问正确的方法是什么。谢谢您问题中的代码总是将当前列表项附加到
\update target
下的所有
元素,因为这是\update target ul
匹配的内容
这并不能解释为什么您根本没有得到任何输出,但您的评论表明您可能也想找到解决此问题的方法
一个简单的答案是使用选择器仅将列表项附加到最后一个
元素:
$("#update-target ul:last").append("<li>" + type + number + "</li>");
$(“#更新目标ul:last”)。追加(“”+类型+编号+” ”);
更详细地说,您还可以尝试使用另一个范例。您希望从收到的XML标记构建DOM元素,这意味着您希望将一些数据(XML标记)投影到其他数据(DOM元素)中。在这种情况下,可以使用,而不是投影数据,而不是迭代数据,这更接近函数式编程:
$(文档).ready(函数(){
$.ajax({
键入:“获取”,
url:XML\u路径,
数据类型:“xml”,
成功:函数(xml){
$(“#更新目标”).empty()
.append($(xml).find(“station”).map(函数(){
返回$(“”).append($(this.find(“vehicle”).map(函数()){
var$this=$(this);
返回$(“- ”).text($this.find(“type”).text()
+$this.find(“number”).text();
}));
}));
}
});
});
这样一来,您就不必首先费心匹配当前的
元素,因为它已成为当前上下文的一部分。您的代码有一个缺陷,因为它总是附加到所有
元素,但这并不能解释您没有得到任何输出。正在加载的XML文档是否定义了名称空间?DOm文档没有任何名称空间。我做错了什么,怎样才能做得更好。你好,弗雷德里克,谢谢你的回答。然而,这仍然使它起作用。没有任何展览。您是否亲自尝试过上面的xml列表。谢谢