Frage

Ich bin schreibe eine Air-Anwendung, die einen Beta-Webservice-API verbraucht. Manchmal wird diese APIreturns mir einen ungültigen XML-Knoten und Actionscript wird einen Fehler auslösen, wenn ich versuche, aus der es dem XML-Objekt zu erstellen.

Was ich getan habe ist nur versuchen, / das Ergebnis zu kontrollieren und die gesamte Antwort zu ignorieren, wenn die XML schlecht ist, aber ich konnte nur den fehlerhaften Knoten ignorieren.

Zum Beispiel:

<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>

den Tag sehen? Wenn ich so etwas fould, würde Ich mag den ganzen Song überspringen und die nächsten erhalten.

Gibt es eine Möglichkeit, dies erreichen könnte?

War es hilfreich?

Lösung

  1. Schreiben an den Webservice-Provider. Sagen Sie ihnen, über die fehlerhafte XML. Sie könnten es einfach beheben.
  2. Wenn eine fehlerhafte XML-Decoder ist mit einem Verlust Standard-XML-Flex übergeben zurück und wirft.
  3. Wenn Sie Ihre eigene Rolle Decoder versuchen wollen zu verarbeiten. Sehen Sie sich die xmlDecode Mitglied HTTPService .

Andere Tipps

Schöne Suppe dies tut, aber es ist in Python geschrieben. Sie könnten natürlich immer durch die Quelle gehen zu graben, und sehen, wie sie es umgesetzt werden.

Wenn die Anzahl der Klasse von Fehlern ist klein, Vorprozess die XML den Fehler zu beheben, geben Sie es dann an den Parser. Dies ermöglicht es Ihnen, die Abhilfe leicht zu entfernen, wenn das Problem behoben ist. Im obigen Fall würden Sie die Datei als Text laden, suchen Sie nach Knoten mit doppelten Tags und nur den gesamten Knoten aus dem XML-Text entfernen.

Oder informieren Sie einfach die Web-Service-Provider und warten -. Wenn sie fehlerhafte XML sind Rückkehr fast jeder Parser daran ersticken wird und das sollte einen Anreiz, es bald zu beheben

Nein, Sie können nicht Teil eines fehlerhaften XML-Dokuments mit einem normalen XML-Parser ignorieren. Es ist wie der Flex Compiler fragen Syntaxfehler zu ignorieren und herauszufinden, was der Codierer wirklich tun soll. Sie müssen Ihre eigenen Parser schreiben, zu schließen versucht, was die Malformation ist und was kann es ignorieren.

Ehrlich gesagt, jeder Web-Service, auch eine Beta, die schlechte XML sendet, ist nicht zuverlässig. Es bedeutet, dass sie die XML „von Hand“ komponieren stattdessen eine programmatische Klasse zu verwenden. Wer das tut, ist wahrscheinlich viele andere Fehler machen, vor allem Regressionen. Ihre Zeit ist zu wertvoll, auf sie abhängig zu sein.

Prost

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top