Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Jquery从XML文件获取第二个元素的列表_Jquery_Xml - Fatal编程技术网

使用Jquery从XML文件获取第二个元素的列表

使用Jquery从XML文件获取第二个元素的列表,jquery,xml,Jquery,Xml,我有一个xml文件,我只想从列表中读取第二级元素。例如,我只想有一个车辆列表,如下所示 车辆编号:“180”,类型:“公共汽车” 车辆编号:“190”,类型:“公共汽车” ....... 这是我的xml格式 <departures> <station> <vehicle> <number>180</number> <type>BUS</type> </vehicle>

我有一个xml文件,我只想从列表中读取第二级元素。例如,我只想有一个车辆列表,如下所示

车辆编号:“180”,类型:“公共汽车” 车辆编号:“190”,类型:“公共汽车” .......

这是我的xml格式

<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列表。谢谢