3

我有这个 XML 文件,

<tour title="Bavaria, Austrian, and the Alps" baseCost="1799.99">
<availability start="2011/03/25" end="2011/9/30"/>
<description>

</description>

<stop day="1">
<title>Munich, Germany. </title>

<description></description>
<latitude>48.15</latitude>
<longitude>11.5833333</longitude>
<hotels>
<hotel name="Europa Hotel" stars="3" premium="0.0"/>
<hotel name="Excelsior Hotel" stars="4" premium="59.99"/>
<hotel name="Grand Hotel" stars="5" premium="199.99"/>
</hotels>

</stop>

<stop day="2">
<title>Garmisch, Germany.</title>

<description>Major destination of the Bavarian alps. Site of a major World Cup ski race.</description>
<latitude>47.5</latitude>
<longitude>11.0833333</longitude>
<hotels>
<hotel name="Europa Hotel" stars="3" premium="0.0"/>
</hotels>
</stop>

我已经解析了我需要的所有内容,但问题是我需要像这样显示输出,

<title name>
 <stop name>
  <hotels names>
 <stop name>
  <hotels names>

但是输出是这样的,

<title name>
<stops names>
<hotels names>

仅在一个订单中,我应该使用什么,insertAfter() 或 after()?

这是我的 jQuery 代码: http: //pastebin.com/dmETKi9E

HTML 代码:

 <body>
    <h1 id="header"></h1>
    <h2 id="stop"></h2>
    <p id="hotel"></p>
 </body>
4

2 回答 2

2

更新测试和工作问题在于您的 HTML。所有标题都与标题一起进入,所有站点都进入站点,所有酒店都进入酒店,而您应该为每个新项目创建一个新对象。查看wrap() jquery 命令。你要做的是

function processXml(xml) {
  var header, stop, hotel;
  $(xml).find("tour").each(function() {
    header = $('<h1 class="header" />');
    header.html($(this).attr("title"));

    $(this).find("stop").each(function() {

      stop = $('<h2 class="stop" />');
      stop.html(($(this).find("title").text()));

      $(this).find("hotel").each(function() {
       hotel = $('<p class="hotel" />');
       hotel.html(($(this).attr("name")));
       stop.append(hotel);
      });

      header.append(stop);
    });
    $('body').append(header);
  });
}

别客气 :)

于 2012-08-02T05:52:07.340 回答
-1

我认为问题在于您想要的方式不是格式良好的xml。输出剂量在哪里?为什么需要特殊格式?xml 不应该也包含结束标签吗?

于 2012-08-02T05:46:15.840 回答