Ich habe einige grundlegenden Code, der einige XML-Code durchlaufen kann, die von Adobe RoboHelp generiert wurde (für unsere Hilfe-Dokumentation). Das funktioniert gut, aber da ein Thema so oft verschachtelt werden kann, wie der Schreiber es möchte, brauche ich einen besseren Weg, um dieses XML zu durchlaufen, als nur Verschachtelungen zu verschachteln.Durchlaufen von XML mit jQuery
Hier ist, was die XML sieht aus wie
<?xml version="1.0" encoding="utf-8"?>
<!--RoboML: Table of Content-->
<roboml_toc>
<page title="Welcome" url="Welcome.htm"/>
<book title="Getting Started" url="Getting_Started/Initial_Setup.htm">
<page title="Initial Setup" url="Getting_Started/Initial_Setup.htm"/>
<page title="Customize Settings" url="Getting_Started/Settings.htm"/>
</book>
<book title="Administrator Services" url="Administrator_Services/General_Administrator.htm">
<book title="Portal Workspace" url="Administrator_Services/Portal_Workspace/AdminHome.htm">
<page title="Home" url="Administrator_Services/Portal_Workspace/AdminHome.htm"/>
<page title="Portal Accounts" url="Administrator_Services/Portal_Workspace/Portal_Accounts.htm"/>
</book>
<book title="SpamLab" url="Administrator_Services/SpamLab/SpamLab_Admin_General.htm">
<page title="Alerts" url="Administrator_Services/SpamLab/Alerts.htm"/>
<page title="Spam Quarantine" url="Administrator_Services/SpamLab/Admin_Spam_Quarantine_.htm"/>
</book>
</book>
<book title="User Services" url="User_Services/General_User.htm">
<book title="Portal Workspace" url="User_Services/Portal_Workspace/Home.htm">
<page title="Home" url="User_Services/Portal_Workspace/Home.htm"/>
<page title="Self Help" url="User_Services/Portal_Workspace/Self_Help.htm"/>
</book>
<book title="SpamLab" url="User_Services/SpamLab/SpamLab_General.htm">
<page title="Spam Quarantine" url="User_Services/SpamLab/Spam_Quarantine.htm"/>
<page title="Virus Quarantine" url="User_Services/SpamLab/Virus_Quarantine.htm"/>
</book>
<book title="Encryption" url="User_Services/Encryption/Encryption_General.htm">
<page title="Outlook Plug-in" url="User_Services/Encryption/Encryption_Outlook_Plug_in.htm"/>
</book>
</book>
</roboml_toc>
A <page>
einen Artikel ist, und ein <book>
ist ein Ordner.
Her ist mein jQuery-Code, der nur eine Ebene tiefer von Tags aussehen kann
//Get the TOC
$tocOutput="";
$.get(tocURL,function(toc){
$(toc).children().each(function(){
$tocOutput+="<li><a href='"+$(this).attr("url")+"'>"+$(this).attr("title")+"</a>";
if(this.tagName=="BOOK"){
$tocOutput+="<ul>";
$(this).find("page").each(function(){
$tocOutput+="<li><a href='"+$(this).attr("url")+"'>"+$(this).attr("title")+"</a></li>";
});
$tocOutput+="</ul>";
}
$tocOutput+="</li>";
});
$("#list").html($tocOutput);
ich weiß, gibt es eine bessere Möglichkeit, nur eine Schleife durch alle Elemente und dann bestimmen, ob das Element Kinder, etc., aber ich Ich kann mir einfach nicht vorstellen, wie ich es machen soll.
Jede Hilfe wird sehr geschätzt!
Nur neugierig - warum muss das auf dem Client getan werden? Warum nicht eine XSLT-Transformation auf dem Server anwenden und den HTML-Code senden? Ist das XML dynamisch? Kann der transformierte HTML-Code nicht auf dem Server zwischengespeichert werden? –
Egal, froh, dass Sie eine Lösung gefunden haben - JETZT AKZEPTIEREN KEITHS ANTWORT :) –
Ich ABWEICHE! Dies war nur ein Beweis des Konzepts für jetzt .... eigentlich wollte ich nur einige Leute beeindrucken. Sie duschen mich jetzt mit Lob, also ist es das wert. Irgendwann denke ich, dass wir diese Server-Seite machen werden. –