2009-04-02 8 views
0

J'ai supprimé certaines balises que je pensais inutiles d'un fichier XML. Maintenant, quand j'essaye de l'analyser, mon analyseur SAX jette une erreur et dit que mon fichier n'est pas bien formé. Cependant, je sais que chaque balise de début a une balise de fin. La balise d'ouverture du fichier a un lien vers un schéma XML. Cela pourrait-il causer le problème? Si oui, alors comment le réparer?L'interpréteur Python SAX indique que le fichier XML n'est pas bien formé

Edit: Je pense que j'ai trouvé le problème. Mes données de personnage contiennent les caractères "& lt" et "& gt", vraisemblablement des balises html. Après avoir été analysés, ils sont convertis en caractères "<" et ">", ce qui semble déranger l'analyseur syntaxique SAX. Y a-t-il un moyen d'empêcher cela?

+0

http://validator.w3.org/ – bernie

+0

Le lien d'étiquette d'ouverture vers un schéma XML peut être un espace de noms. Vous voudrez laisser cela à l'intérieur. – bernie

+0

Pourriez-vous aider est-ce que vous avez fourni l'erreur réelle de SAX. –

Répondre

1

Est-ce que l'analyseur de saxe ne vous donne pas des détails sur pense qu'il n'est pas bien formé?

Avez-vous essayé de charger le fichier dans un éditeur XML et de le vérifier là? Les autres analyseurs XML l'acceptent-ils?

Le schéma ne doit pas changer si le XML est bien formé ou non; il peut changer si c'est valide ou pas. Voir la wikipedia entry for XML well-formedness pour un peu plus, ou XML specs pour beaucoup plus de détails :)

EDIT: Pour représenter « & » dans le texte, vous devez échapper comme &amp;

Alors:

&lt 

devrait être

&amp;lt 

(en supposant que vous voulez vraiment esperluette, l, t).

+0

J'ai examiné le fichier à l'endroit incriminé, et ce n'est que des données de caractères (à moins que je ne compte les lignes erronées). Malheureusement, le fichier est trop volumineux pour pouvoir être utilisé dans un éditeur standard. J'ai une étiquette de racine, et ouvre et ferme des étiquettes. Cela reste un mystère. –

+0

Essayez-le avec un autre analyseur non-DOM (XmlReader dans.NET, ou peut-être SAX en Java) et voir si cela fonctionne ou donne éventuellement plus d'informations utiles. –

+0

"Trop grand"? Arrête d'utiliser des mots vagues. Combien d'octets est-ce? Il est peut-être temps de changer d'éditeur ... – bortzmeyer

2

Je suggère de remettre ces étiquettes et de m'assurer qu'elles fonctionnent toujours. Ensuite, si vous voulez les sortir, faites-le un à la fois jusqu'à ce qu'il se brise.

Cependant, je doute de la sagesse de les retirer. Si c'est votre fichier XML, vous devriez le comprendre mieux. S'il s'agit d'un fichier XML tiers, vous ne devriez pas le manipuler (jusqu'à ce que vous le compreniez mieux :-).

0

Je recommanderais deuxièmement d'essayer de l'analyser en utilisant un autre analyseur XML. Cela devrait indiquer si c'est le document qui ne va pas ou l'analyseur.

En outre, le message d'erreur réel peut être utile. Un problème assez courant par exemple est que la déclaration xml (si elle est utilisée, c'est facultatif) doit être la toute première chose - même les espaces blancs ne sont pas autorisés avant.

0

Vous pouvez le charger dans Firefox, si vous n'avez pas d'éditeur XML. Firefox vous montre l'erreur.

Questions connexes