【发布时间】:2017-01-29 05:10:05
【问题描述】:
源 XML 如下所示:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<area>
<ticket>
<ticketnumber>001</ticketnumber>
<location>Location</location>
</ticket>
<ticket>
<ticketnumber>001</ticketnumber>
<location>Location</location>
</ticket>
<ticket>
<ticketnumber>001</ticketnumber>
<location>Location</location>
</ticket>...
</area>
我可以使用以下代码将其解析为现有的无序列表:
$(document).ready(function(){
$.ajax({
type: "GET",
url: "feed.xml",
dataType: "xml",
success: function(xml) {
$(xml).find('ticket').each(function(){
var varTicket = $(this).find('ticketnumber').text();
var varLocation = $(this).find('location').text();
var varTheHTML = '<li>'+varTicket+' '+varLocation+'</li>';
$(varTheHTML).appendTo("#ticket-test");
});
},
error: function() {
alert("The XML File could not be processed correctly.");
}
});
});
这为我提供了预期的填充列表。
<ul id="ticket-test">
<li>001 Location</li>
<li>001 Location</li>
<li>001 Location</li>...
</ul>
当我需要将此列表拆分为多个列表时,问题开始出现,最好嵌套在主列表中。新结构现在是:
<ul id="ticket-test">
<li>
<ul>
<li>001 Location</li>
<li>001 Location</li>
<li>001 Location</li>...
</ul>
</li>
<li>
<ul>
<li>001 Location</li>
<li>001 Location</li>
<li>001 Location</li>...
</ul>
</li>...
</ul>
源 XML 本质上是一个平面列表,因此我需要将这些列表项分配到 10 个左右的块中(稍后与 unslider 一起使用)。
我曾尝试在 .each 函数中运行计数器并使用 return false 再次跳出,但代码很快就变成了意大利面条结,我确信有一种更优雅的方式来实现这一点。
我也尝试过 .split 和 for 循环,但总是碰壁。
【问题讨论】:
-
第二个嵌套的
<ul>是第一个嵌套的<ul>的副本吗? -
不是重复的(抱歉,描述中没有说清楚),第一个嵌套列表是xml中的前10项,第二个列表是列表中的后10项,以此类推.
标签: javascript jquery xml list parsing