私は、Adobe RoboHelp(ヘルプドキュメント用)から生成されたXMLをループする基本的なコードをいくつか持っています。これはうまくいきますが、作者が望むようにトピックを入れ子にすることができるので、ループを入れ子にするのではなく、このXMLをループするより良い方法が必要です。.each()
ここでjQueryでXMLをループする
は、XMLが
<?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>
どのように見えるかの記事で、<book>
はフォルダです。
彼女はなどタグのみ
//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);
の深い1つのレベルを見ることができます私のjQueryのコード、私はすべての要素を通してだけループする良い方法があります知っているし、その後の要素が子を持つかどうかを判断、だけどそれをどうやって行うのか考えることはできません。
ご協力いただきありがとうございます。
ちょっと好奇心 - なぜこれをクライアントで行う必要がありますか?なぜサーバー上でXSLT変換を適用せずにHTMLを送信するのですか? xmlは動的ですか?変換されたhtmlはサーバーにキャッシュされませんか? –
それにもかかわらず、あなたが解決策を見つけられてうれしく思いました - 今すぐキーの答えを受け入れます:) –
私は拒否します!これは今のところコンセプトの証明に過ぎませんでした....実際に私はただの人々に印象づけたかっただけです。彼らは今私に賞賛を浴びせているので、それは価値がある。結局私はこのサーバー側をやっていると思う。 –