Question

Je suis en train d’écrire une application Air qui utilise une API de service Web bêta. Parfois, cette API me renvoie un nœud XML mal formé et ActionScript génère une erreur lorsque je tente de créer un objet XML à partir de celui-ci.

Ce que je fais est simplement essayer / attraper le résultat et ignorer toute la réponse si le code XML est incorrect, mais je pourrais simplement ignorer le nœud mal formé.

Par exemple:

<result>
  <Song>
    <location>http://www.anyurl.com/audio/loftparty092108_pt4.mp3</location>
    <title>Phonte party @ The Loft, 9/21/08 (pt. 4)</title>
    <artist>Statik, Jahsonic &amp; Stylus        <artist>Statik, Jahsonic &amp; Stylusre />
  </Song>
</result>

Voir cette balise? Si je devais quelque chose comme ça, j'aimerais sauter le morceau entier et obtenir le prochain.

Existe-t-il un moyen de le faire?

Était-ce utile?

La solution

  1. Ecrivez au fournisseur de services Web. Parlez-leur du XML mal formé. Ils pourraient simplement le réparer.
  2. Lorsqu'un fichier XML mal formé est renvoyé, le décodeur XML par défaut de Flex est illisible.
  3. Si vous souhaitez essayer le traitement, lancez votre propre décodeur. Voir le xmlDecode membre de HTTPService .

Autres conseils

Beautiful Soup le fait, mais il est écrit en Python. Vous pouvez bien sûr toujours aller à creuser dans la source et voir comment ils l'ont mise en œuvre.

Si le nombre de classes d'erreurs est petit, prétraitez le code XML pour le supprimer, puis remettez-le à votre analyseur. Cela vous permettra de supprimer facilement la solution de contournement une fois le problème résolu. Dans le cas ci-dessus, vous devriez charger le fichier sous forme de texte, rechercher des nœuds avec des balises dupliquées et simplement supprimer le nœud entier du texte XML.

Vous pouvez également avertir le fournisseur de services Web et attendre: s'il renvoie du code XML mal formé, presque tous les analyseurs s'y étouffent et il devrait être incité à les résoudre rapidement.

Non, vous ne pouvez pas ignorer une partie d'un document XML mal formé avec un analyseur XML normal. C'est comme demander au compilateur Flex d'ignorer les erreurs de syntaxe et de comprendre ce que le codeur voulait vraiment faire. Vous devrez écrire votre propre analyseur qui tente de déduire quelle est la malformation et ce qu’elle peut ignorer.

Honnêtement, aucun service Web, même une version bêta, qui envoie un fichier XML incorrect, n’est pas fiable. Cela implique qu’ils composent le XML "à la main". au lieu d'utiliser une classe de programmation. Toute personne faisant cela est susceptible de faire beaucoup d'autres erreurs, en particulier des régressions. Votre temps est trop précieux pour en dépendre.

A bientôt

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top