Forum de discussion
Forum « Flash et Shockwave » (archives)
problème de Parser Xml
Envoyé: 23 janvier 2004, 15h52 par blues
<?xml version="1.0" encoding="iso-8859-1" ?>
<SOMMAIRE nom="Menu">
<CHAPTITRE nom="HOME" content = "Intro.txt">
<CHAPTITRE nom="PRODUITS" content = "Intro_Produits.txt">
<SUB-CHAPTITRE nom="Vente" content = "Intro_Vente.txt" >
<ARTICLE nom="Vente_Page 1" content = "VentePage1.txt" >
<ARTICLE nom="Vente_Page 2" content = "VentePage2.txt" >
</SUB-CHAPTITRE>
<SUB-CHAPTITRE nom="Conseil - Consultence" content = "Conseil.txt">
<SUB-CHAPTITRE nom="Production" content = "Production.txt">
<SUB-CHAPTITRE nom="Instalation" content = "Instalation.txt">
<SUB-CHAPTITRE nom="Entretient" content = "Entretient.txt">
<SUB-CHAPTITRE nom="Formation" content = "Formation.txt">
</CHAPTITRE>
<CHAPTITRE nom="SERVICES" content = "Intro_services.txt">
<SUB-CHAPTITRE nom="Consultence" content = "Consultence.txt" >
<SUB-CHAPTITRE nom="Conduit" content = "Conduit.txt" >
<SUB-CHAPTITRE nom="Pompe Incendie" content = "IntroPompe.txt">
<SUB-CHAPTITRE nom="Reservoires Eau" content = "Reservoires.txt">
<SUB-CHAPTITRE nom="Sprinkler" content = "Sprinkler.txt">
<SUB-CHAPTITRE nom="Protecection" content = "Intro_Protection.txt">
<ARTICLE nom="Traditionel" content = "Traditionnelle.txt" >
<ARTICLE nom="Spéciale" content = "Spléciale.txt" >
<ARTICLE nom="Résidentiel" content = "Résidentiel.txt" >
</SUB-CHAPTITRE>
</CHAPTITRE>
<CHAPTITRE nom="PARTENAIRES" content = "Intro_Partenaire.txt">
<SUB-CHAPTITRE nom="Viking1" content = "Viking.txt" >
<SUB-CHAPTITRE nom="Bosec" content = "Bosec.txt" >
<SUB-CHAPTITRE nom="ISO 9100" content = "Iso.txt" >
</CHAPTITRE>
<CHAPTITRE nom="CONTACT" content = "Intro_Contact.txt">
<SUB-CHAPTITRE nom="E-Mail" content = "" >
<SUB-CHAPTITRE nom="INFO" content = "Info.txt">
<SUB-CHAPTITRE nom="Formulaire Info" content = "Formulaire.txt" >
<SUB-CHAPTITRE nom="Plant d'accés" content = "PLan.txt" >
</CHAPTITRE>
</SOMMAIRE>
les listes utiles
Lt_Chap = new Array();
// liste des chapitres
Lt_Content_Chap = new Array();
// liste du contenu des chapitres
Lt_NbSub = new Array([],[]);
// liste du nombre de sous-chapitres par chapitre
Lt_Sub = new Array([],[]);
// liste des sous-chapitre
Lt_Content_Sub = new Array([],[]);
// liste du contenu des sous-chapitre
Lt_NbArt = new Array([],[],[]);
// liste du nombre d'articles par sous-chapitres
Lt_Art = new Array([],[],[]);
// liste des articles
Lt_Content_Art = new Array([],[],[]);
// liste du contenu des articles
////
la turbine pour parser l'Xml
function createsom(tracer) {
nbChap = xmldoc.firstChild.childNodes.length;
Lt_Content_Sub.twoDim0(nbChap, 0);
Lt_Sub.twoDim0(nbChap, 0);
//Lt_NbArt.twoDim0(nbChap, 0);
//Lt_Art.twoDim0(nbChap, 0);
//Lt_Content_Art.twoDim0(nbChap, 0);
for (i=0; i<nbChap; i++) {
IDChap = xmldoc.firstChild.childNodes[i].attributes.nom;
Lt_Chap[i] = IDChap;
Chap = xmldoc.firstChild.childNodes[i].attributes.content;
if (tracer == "Total") {
trace("Chapitre "+(i+1)+" : "+IDChap);
}
Lt_Content_Chap[i] = Chap;
//
nbSub = xmldoc.firstChild.childNodes[i].childNodes.length;
Lt_NbSub[i] = nbSub;
Lt_Content_Sub[i].twoDim(nbSub);
Lt_Sub[i].twoDim(nbSub);
Lt_Art[i].twoDim0(nbSub, 0);
Lt_Content_Art[i].twoDim0(nbSub, 0);
//
if (Lt_NbSub[i] == 0) {
Lt_Sub[i][0] = "chapitre n°"+(i+1)+" : vide";
Lt_Content_Sub[i][0] = "none";
Lt_NbArt[i][0] =0;
Lt_Art[i][0] = "NoNe";
Lt_Content_Art[i][0] = "NONE";
if (tracer == "Total") {
trace("\t\t-- il n'y a pas se sous-capitre pour ce chapitre n°"+(i+1));
}
} else {
for (j=0; j<nbSub; j++) {
IDSub = xmldoc.firstChild.childNodes[i].childNodes[j].attributes.nom;
Lt_Sub[i][j] = IDSub;
Sub = xmldoc.firstChild.childNodes[i].childNodes[j].attributes.content;
if (tracer=="Total") {
trace("\tSous Chapitre "+(i+1)+"."+(j+1)+" : "+Sub);
}
Lt_Content_Sub[i][j] = Sub;
//
NbArt = xmldoc.firstChild.childNodes[i].childNodes[j].childNodes.length;
Lt_NbArt[i][j] = nbArt;
//
Lt_Art[i][j].twoDim(nbArt);
Lt_Content_Art[i][j].twoDim(nbArt);
//
//
if (Lt_NbArt[i][j] == 0) {
Lt_Art[i][j][0] = "Sous Chapitre n°"+(i+1)+"."+(j+1)+" : vide";
Lt_Content_Art[i][j][0] = "none";
if (tracer == "Total") {
trace("\t\t\t** il n'y a pas d'article pour ce sous chapitre n°"+(j+1));
}
} else {
for (k=0; k<nbArt; k++) {
IDArt = xmldoc.firstChild.childNodes[i].childNodes[j].childNodes[k].attributes.nom;
Lt_Art[i][j][k] = IDArt;
Art = xmldoc.firstChild.childNodes[i].childNodes[j].childNodes[k].attributes.content;
if (tracer == "Total") {
trace("\t\t\tArticle "+(i+1)+"."+(j+1)+"."+(k+1)+" : "+Art);
}
Lt_Content_Art[i][j][k] = Art;
}
}
}
}
}
if (tracer) {
trace("--------------------------------------------------------------");
}
//tracer = false;
if (tracer == "Liste") {
trace("Lt_Chap ="+Lt_Chap);
trace("Lt_Content_Chap = "+Lt_Content_Chap);
trace("Lt_NbSub ="+Lt_NbSub);
trace("Lt_Sub ="+Lt_Sub);
trace("Lt_Content_Sub = "+Lt_Content_Sub);
trace("Lt_NbArt ="+Lt_NbArt);
trace("Lt_Art = "+Lt_Art);
trace("Lt_Content_Art ="+Lt_Content_Art);
}
TotalLoad = true;
}
Ma Question:
pour je ne sais quel raison dans les sous chapitres et les articles, il me met un élément suplémentaire qui me donne un truc du genre:
Lt_sub(a,b,c,)
et je ne sais pas si c'est lier, mais il en resulte que lorsque je récupere les liste(array)pour afficher mon menu, il plante si mon xml ne contient pas 4 sub_chap pour le dernier Chap ou encore il plante si entre duex chapitre contenant de sub_chap, il y a un Chap sans Sub_chap...
la routine qui utilise les liste pour afficher le menu
function TraceMenu() {
y = 80;
createMenu("Menu", Lt_Chap, "Stand");
for (i=0; i<Lt_Chap.length; i++) {
nb_chap++;
trace(Lt_Chap[i]);
//trace(Lt_Chap);
Lt_Sub[i].pop();
for (j=0; j<Lt_NbSub[i]; j++) {
nb_sub++;
if (Lt_NbSub[i]) {
trace(" "+Lt_Sub[i][j]);
//trace(" "+Lt_Sub[i]);
if(Lt_Sub[i][j].length ==0){
trace ("vide")
};
Lt_Art[i][j].pop();
for (k=0; k<Lt_NbArt[i][j]; k++) {
nb_art++;
if (Lt_NbArt[i][j]) {
trace(" "+Lt_Art[i][j][k]);
//trace(" "+Lt_Art[i][j]);
if(Lt_Art[i][j][k-1].length ==0){
trace ("vide")
};
}
}
}
}
}
//trace(nb_chap+"/"+nb_sub+"/"+nb_art);
}
Réponses
|