Discussion:
XML : texte en forme de balise
(trop ancien pour répondre)
pata...@gmail.com
2023-05-25 13:58:24 UTC
Permalink
bonjour,

j'ai cette chaîne de caractères à traiter "<a><b>this is <bad> tag text</b></a>".

du fait de la présence de "<bad>", xml.etree.ElementTree.fromstring() échoue à traiter la chaîne : comment puis-je préciser à xml.etree.ElementTree que <bad> n'est pas une balise ou inversement lui demander de ne considérer que les balises a et b ?
Olivier Miakinen
2023-05-25 15:35:43 UTC
Permalink
Post by ***@gmail.com
j'ai cette chaîne de caractères à traiter "<a><b>this is <bad> tag text</b></a>".
du fait de la présence de "<bad>", xml.etree.ElementTree.fromstring() échoue
à traiter la chaîne : comment puis-je préciser à xml.etree.ElementTree que
<bad> n'est pas une balise ou inversement lui demander de ne considérer que
les balises a et b ?
Je n'ai pas la réponse à ta question parce que je n'utilise pas ces fonctions.
Mais par curiosité, est-ce que ça fonctionne si tu remplaces « <bad> » par
« <bad/> ».

Question subsidiaire, existe-t-il des fonctions qui traitent du texte formaté
en tant que HTML plutôt que XML ? Ça pourrait être une solution, puisque le
formalisme de HTML est moins rigide que celui de XML.
--
Olivier Miakinen
Stefan Ram
2023-05-25 15:52:05 UTC
Permalink
Post by Olivier Miakinen
Je n'ai pas la réponse à ta question parce que je n'utilise pas ces fonctions.
Mais par curiosité, est-ce que ça fonctionne si tu remplaces « <bad> » par
« <bad/> ».
Selon les règles du XML, "<bad>" est en tout cas une balise ;
mais avant de les transmettre à des fonctions XML, on peut
.replace( '<bad>', '&lt;bad&gt;' ).
pata...@gmail.com
2023-05-26 07:04:21 UTC
Permalink
Post by Olivier Miakinen
Post by ***@gmail.com
j'ai cette chaîne de caractères à traiter "<a><b>this is <bad> tag text</b></a>".
du fait de la présence de "<bad>", xml.etree.ElementTree.fromstring() échoue
à traiter la chaîne : comment puis-je préciser à xml.etree.ElementTree que
<bad> n'est pas une balise ou inversement lui demander de ne considérer que
les balises a et b ?
Je n'ai pas la réponse à ta question parce que je n'utilise pas ces fonctions.
Mais par curiosité, est-ce que ça fonctionne si tu remplaces « <bad> » par
« <bad/> ».
Question subsidiaire, existe-t-il des fonctions qui traitent du texte formaté
en tant que HTML plutôt que XML ? Ça pourrait être une solution, puisque le
formalisme de HTML est moins rigide que celui de XML.
--
Olivier Miakinen
cette petite chaîne est un exemple et malheureusement, je ne connais pas à l'avance les "bad tag" (<????>).
ma question serait donc plutôt : comment fournir à xml.etree.ElementTree la liste des tags à considérer ?
dans XML il est question de namespace (espace des noms) : je suppose que c'est sans doute destiné à ça...
j'ai toujours eu horreur de XML ;-)
Damien Wyart
2023-05-26 17:12:17 UTC
Permalink
Post by ***@gmail.com
cette petite chaîne est un exemple et malheureusement, je ne connais pas
à l'avance les "bad tag" (<????>). ma question serait donc plutôt : comment
fournir à xml.etree.ElementTree la liste des tags à considérer ? dans XML il est
question de namespace (espace des noms) : je suppose que c'est sans doute
destiné à ça... j'ai toujours eu horreur de XML ;-)
ElementTree s'attend à recevoir du XML valide, or quand il y a un tag "orphelin",
ça n'est plus le cas...

J'ai juste trouvé ça qui mentionne "recover" mais je n'ai jamais testé :
https://stackoverflow.com/questions/40314550/ignore-mismatched-tag-in-xml-etree-elementtree-xmlparser-python
--
DW
Olivier Miakinen
2023-05-26 20:34:13 UTC
Permalink
Post by Damien Wyart
ElementTree s'attend à recevoir du XML valide, or quand il y a un tag "orphelin",
ça n'est plus le cas...
+1
Post by Damien Wyart
https://stackoverflow.com/questions/40314550/ignore-mismatched-tag-in-xml-etree-elementtree-xmlparser-python
Ça peut être une piste. Tu nous tiens au courant, pata-trois-petits-points ?
--
Olivier Miakinen
Olivier Miakinen
2023-05-26 20:32:11 UTC
Permalink
Bonjour,
Post by ***@gmail.com
Post by Olivier Miakinen
Post by ***@gmail.com
j'ai cette chaîne de caractères à traiter "<a><b>this is <bad> tag text</b></a>".
Question subsidiaire, existe-t-il des fonctions qui traitent du texte formaté
en tant que HTML plutôt que XML ? Ça pourrait être une solution, puisque le
formalisme de HTML est moins rigide que celui de XML.
--
Olivier Miakinen
<aparté>
Ce serait bien si tu pouvais utiliser une vrai lecteur de news sur un vrai
serveur plutôt que de passer par cette horreur qu'est Google groupes.

Ça te permettrait :
- de choisir un nom qui ne soit pas ton adresse de courriel charcutée ;
- que la signature soit supprimée automatiquement des réponses ;
- que les lignes ne soient pas trop longues.
</aparté>
Post by ***@gmail.com
cette petite chaîne est un exemple et malheureusement, je ne connais pas à l'avance les "bad tag" (<????>).
Peu importe qu'ils soient connus ou inconnus. En XML, une balise ouvrante doit
être suivie d'une balise fermante : <bad>...</bad>, ou alors elle doit être
auto-fermante : <bad/>.

Donc, si tu as un <b> suivi de <bad> puis de </b>, la syntaxe est incorrecte
et un outil automatique ne devrait rien pouvoir en faire. Et ce n'est pas en
fournissant une liste de « mauvaises » balises que ça pourrait être corrigé.
Post by ***@gmail.com
ma question serait donc plutôt : comment fournir à xml.etree.ElementTree la liste des tags à considérer ?
C'est donc une mauvaise question. Désolé si ma réponse te paraît trop brutale.
Post by ***@gmail.com
dans XML il est question de namespace (espace des noms) : je suppose que c'est sans doute destiné à ça...
En l'occurrence, non. La chaîne "<a><b>this is <bad> tag text</b></a>" n'est
*pas* du XML bien formé, alors aucun namespace ne pourra corriger ce bug.
--
Olivier Miakinen
Continuer la lecture sur narkive:
Loading...