![]()  | 
	
| une question parse | |
| drikc | 15-Sep-2008/11:51:06+2:00 | 
| J'aimerais trouver une solution pour parser une chaine du genre : <pre> s: { <section> <name>john mccain</name> </section> <name>barack obama</name> <feature>black skin</feature> <section> } </pre> Donc, le but c'est de récupérer chaque paramètre de chaque section. On voit que la balise <feature> représente un paramètre qui peut être présente ou pas. Donc ma solution pour ce genre de chose c'est <pre> parse/all s [ any [thru <section> copy sec to </section> ( parse/all sec [ thru <name> copy n to </name> (print n) 0 1 [thru <feature> copy f to </feature> (print f)] ] ) ] ] </pre> Mais je me demande s'il y a pas une solution sympa pour cela sans faire un appel à parse dans une règle.  | |
| drikc | 15-Sep-2008/11:53:22+2:00 | 
| ah juste les tags "<pre>" sont à ignorer ici, c'était pour le listing du code! C'est quoi balise pour entourer du code? cedric  | |
| Didec | 15-Sep-2008/14:53:24+2:00 | 
| Il y a un bouton "Help" dans le forum pour connaitre les balises utilisables !!! | |
| Didec | 15-Sep-2008/15:06:41+2:00 | 
Peut être simplement :s: {
   <section>
      <name>john mccain</name>
   <section>
   </section>
      <name>barack obama</name>
      <feature>black skin</feature>
   <section>
}
parse/all s [
   any [
   	thru <section>
	any [
            thru <name> copy n to </name> (print n) | thru <feature> copy f to </feature> (print f)
        ]
   	to </section>
   ]
]
 | |
| drikc | 15-Sep-2008/18:37:40+2:00 | 
| Ah ben oui, simplement. Un détail c'est que s'il manque le balise <name> il y aura qd-même affichage du contenu de la balise <feature>. Si je suis plus précis en disant que la balise <name> n'est pas optionnel et les balises <feature> suivent la balise <name> s'il y en a. ps: j'avais mal écrit mais le contenu de s ds mon précédent message, voilà corrigé: 
s: {
	<section>
		<name>john mccain</name>
	</section>
	<section> 
		<name>barack obama</name>
		<feature>black skin</feature>
	</section>
}
 | |
| Didec | 15-Sep-2008/18:47:58+2:00 | 
Il faut, je pense, remplacer le "|" dans la règle name/feature par un "any [" avec la règle <feature> dedans. Cela permet plusieurs <feature> au cas où :parse/all s [
   any [
   	thru <section>
	any[
            thru <name> copy n to </name> (print n) any [thru <feature> copy f to </feature> (print f)]
        ]
   	to </section>
   ]
] | |
| drikc | 15-Sep-2008/19:05:18+2:00 | 
| Oui mais dans ce cas ce "any" qui parse les tags <feature> va le faire pour tous ceux qu'il trouve y compris ceux qui sont pas ds la section courante. En faites cela va afficher le contenu du 1er tag <name> seulement et ensuite celui de tous les tags <feature> s'il y en a.  | |
| 
 Login required to Post.  | |