Parser de XML [Résolu]

Signaler
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
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

Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
4
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
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
4
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?)
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
52
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-
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
4
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.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
Salut,


Mais pourquoi s'amuser à customiser le XML ?

/*
coq
MVP Visual C#
CoqBlog
*/
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
4
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.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
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
*/
Messages postés
339
Date d'inscription
dimanche 26 janvier 2003
Statut
Membre
Dernière intervention
25 mars 2009
4
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 :)
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
86
De rien.

/*
coq
MVP Visual C#
CoqBlog
*/