Parser de XML

Résolu
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 - 17 avril 2008 à 22:57
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 19 avril 2008 à 19:45
Bonjour,

Je recherche un parser de XML simple capable de lire node par node un fichier.
En effet, je dois travailler avec des fichiers XML pas toujours très standards pour être poli et les classes .NET XmlTextReader (on oublie XmlDocument qui ne charge pas le fichier) throw des exceptions et bloque.

Par exemple, j'ai des nodes comme
<nom attribut="valeur", attribut2="valeur2"> qui peuvent se glisser de temps en temps. La virgule fais planter le truc. Mettre dans un try/catch ne change rien au probleme: le XmlTextParser s'obstine à vouloir lire l'attribut corrompu.

Bref, je recherche un truc tout con capable de lire une node XML sans verification de standards ou une regexp assez souple pour faire ce type de boulot à la rigueur...

Dites moi que ca existe?

9 réponses

bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
19 avril 2008 à 12:48
http://www.csharpfr.com/codes/PARSER-NODE-XML-ALTERNATIF_46403.aspx

On est jamais aussi bien servi que par soit même n'est ce pas? :p
3
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
17 avril 2008 à 23:37
Pour éclaircir un peu mes propos:

La méthode Read() d'un XmlTextReader passe d'une node à la suivante. Si cette node est corrompue, le reader n'arrive pas à passer à la node suivante et reste bloqué. Comment contourner cet effet? (ou existe t-il un parser plus souple?)
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 60
18 avril 2008 à 00:18
Bonsoir,
Si le document n'est pas conforme XML, alors je ne pense pas que les objets traitant XML (System.Xml...) soient capable de traiter de tel document puisque ce n'est justement pas un fichier XML !

Dans ce cas là, je ne vois guère d'autres solutions que de:
 - Corriger le fichier afin que cela soit vraiment du XML
 - Utiliser un parser standard comme si c'était du texte.

<hr />
-My Blog-
0
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
18 avril 2008 à 18:11
Hum mouais... C'est bien ce que je craignais. Comme la réponse ne va pas tomber du ciel je suis en train d'écrire mon propre parser de node XML adapté à ce que je veux faire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 100
19 avril 2008 à 17:01
Salut,


Mais pourquoi s'amuser à customiser le XML ?

/*
coq
MVP Visual C#
CoqBlog
*/
0
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
19 avril 2008 à 17:29
Je n'y peux rien: je récupère des logs d'un autre logiciel, et je dois donc me débrouiller avec.
J'ai signalé la non conformité de leur XML produit au service technique, mais en attendant je dois me débrouiller.
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 100
19 avril 2008 à 18:36
Ok.
Personnellement je serais plutot parti sur une phase de transformation du log pour le rendre "valide" afin de pouvoir utiliser du standatd derrière.

/*
coq
MVP Visual C#
CoqBlog
*/
0
bubbathemaster Messages postés 339 Date d'inscription dimanche 26 janvier 2003 Statut Membre Dernière intervention 25 mars 2009 4
19 avril 2008 à 19:38
C'est sans doute une bonne idée mais ca prendrait beaucoup de temps. J'ai besoin de parser des dizaines de milliers de lignes dans un temps raisonnable. En tous cas merci pour l'indexeur :)
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 100
19 avril 2008 à 19:45
De rien.

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous