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. |