我在我看來,這是可能的。
參見:
http://www.jstree.com/documentation/xml_data
的JsTree函數稱爲.parse_xml 可以用於XML字符串或 對象轉換爲DOM結構由jstree需要 。
編輯:錯!
如果您發佈了您的站點地圖XML示例,我很樂意爲您創建一個可用的示例。
編輯:工作下面的例子
您可以JsTree過程中的外部XML源,但通過AJAX選項。想象一下,你有一個XBEL文件是這樣的:
<xbel version="1.0">
<bookmark href="http://stackoverflow.com">
<title>Stack Overflow</title>
</bookmark>
<folder>
<title>Stack Exchange</title>
<folder>
<title>Programming</title>
<bookmark href="http://stackoverflow.com">
<title>Stack Overflow</title>
</bookmark>
<bookmark href="http://stackapps.com">
<title>Stack Apps</title>
</bookmark>
<bookmark href="http://webapps.stackexchange.com">
<title>Web Applications</title>
</bookmark>
<bookmark href="http://programmers.stackexchange.com/">
<title>Programmers</title>
</bookmark>
</folder>
<folder>
<title>Systems</title>
<bookmark href="http://serverfault.com">
<title>Server Fault</title>
</bookmark>
<bookmark href="http://superuser.com">
<title>Super User</title>
</bookmark>
</folder>
<bookmark href="http://careers.stackoverflow.com">
<title>Careers</title>
</bookmark>
<bookmark href="http://meta.stackoverflow.com">
<title>Meta</title>
</bookmark>
<bookmark href="http://area51.stackexchange.com">
<title>Area 51</title>
</bookmark>
<bookmark href="http://gaming.stackexchange.com">
<title>Gaming</title>
</bookmark>
</folder>
</xbel>
您可以JsTree處理這個是這樣的:
<html>
<head>
<title></title>
<script type="text/javascript" src="_lib/jquery.js"></script>
<script type="text/javascript" src="_lib/jquery.cookie.js"></script>
<script type="text/javascript" src="_lib/jquery.hotkeys.js"></script>
<script type="text/javascript" src="jquery.jstree.js"></script>
<script type="text/javascript">
$(function() {
$("#xbel").jstree({
"xml_data" : {
"ajax" : {
"url" : "stackexchange.xml",
"success" : function(data, textStatus, XMLHttpRequest){
var result = $('<dom></dom>');
var root = $('<root></root>');
var doc = traverseXbel($(data), root);
result.append(doc);
return result.html();
}
},
"xsl" : "nest"
},
"plugins" : [ "themes", "xml_data" ]
});
});
function traverseXbel(xbel, doc){
var title, href, item, name, content, innerdoc;
// folder => item
// bookmark => item with href attribute
// Deal with this level bookmarks
$(xbel).children('bookmark').each(function(){
href = $(this).attr('href');
title = $(this).find('title').text();
if(title && href){
item = $('<item></item>');
content = $('<content></content>');
name = $('<name></name>');
name.attr("href", href);
name.text(title);
content.append(name);
item.append(content);
doc.append(item);
}
});
$(xbel).children('folder').each(function(){
title = $(this).find('title:first').text();
if(title){
item = $('<item></item>');
content = $('<content></content>');
name = $('<name></name>');
name.text(title);
content.append(name);
item.append(content);
item = traverseXbel($(this), item);
doc.append(item);
}
});
return doc;
}
</script>
</head>
<body>
<div id="xbel"></div>
</body>
</html>
好吧,我感覺不太白癡的現在,我的第一個答案是錯誤的,因爲我誤解了JsTree API文檔。
您能否請您發佈您的代碼..至少請抽取樣品? – Interstellar 2014-07-15 10:46:43