【发布时间】:2011-12-07 15:37:11
【问题描述】:
首先是我想要的结构:
<ul>
<li>
<h3>State Name 1</h3>
<ul>
<li>
<a href="storeurl" id="storeid">storename</a>
</li>
<li>
<a href="storeurl" id="storeid">storename2</a>
</li>
</ul>
</li>
<li>
<h3>State Name 2</h3>
<ul>
<li>
<a href="storeurl" id="storeid">storename</a>
</li>
</ul>
</li>
</ul>
这是我的 xml 文件的结构:
<storeList>
<state>
<stateName>Maine</stateName>
<store>
<storeName>first store</storeName>
<storeID>store1</storeID>
<storeURL>http://www.url.com</storeURL>
</store>
<store>
<storeName>second store</storeName>
<storeID>store2</storeID>
<storeURL>http://www.url.com</storeURL>
</store>
<store>
<storeName>third store</storeName>
<storeID>store3</storeID>
<storeURL>http://www.url.com</storeURL>
</store>
</state>
<state>
<stateName>Connecticut</stateName>
<store>
<storeName>first store</storeName>
<storeID>store4</storeID>
<storeURL>http://www.url.com</storeURL>
</store>
</state>
</storeList>
我不确定如何遍历元素来获取嵌套列表。 我知道如何将xml元素写入html,但我之前没有做过这种类型的嵌套列表。
我尝试分解脚本以循环遍历不同的元素,但这不起作用,我知道我的结构对于第二部分是错误的。我假设我必须对 ul 元素进行某种外包装或内包装?
$(document).ready(function () {
$.ajax({
type: "GET",
url: "xml/storeList.xml",
dataType: "xml",
success: xmlParser
});
});
function xmlParser(xml) {
$(xml).find("state").each(function () {
$(".storeListContent").append('<ul><li><h3>' +
$(this).find("stateName").text() +
'</h3></li></ul>');
});
/*$(xml).find("store").each(function () {
$(".storeListContent ul li").append('<ul><li>' +
'<a class="storeInactive" id="' +
$(this).find("storeID").text() +
'" href="' +
$(this).find("stateURL").text() +
'">' +
$(this).find("stateName").text() +
'</a>' +
'</li></ul>'
);
});*/
}
工作: 不得不将数据类型更改为 html 而不是 xml。 任何人都知道为什么会这样吗?
【问题讨论】:
-
您可以访问服务器代码吗?使用 XSLT 在服务器上执行此操作可能会容易得多......然后获取已经准备好的 html 字符串。
-
不,需要全部在前端运行