Domanda

Sto scrivendo un'applicazione Air che utilizza un'API di webservice beta. A volte questa API mi restituisce un nodo XML non corretto e actionscript genererà un errore quando provo a creare l'oggetto XML da esso.

Quello che ho fatto è solo provare / catturare il risultato e ignorare l'intera risposta se l'XML è errato, ma potrei semplicemente ignorare il nodo non valido.

Ad esempio:

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

Vedi quel tag? Se dovessi fare qualcosa del genere, mi piacerebbe saltare l'intera canzone e ottenere la prossima.

Esiste un modo per riuscirci?

È stato utile?

Soluzione

  1. Scrivi al fornitore del servizio web. Raccontagli dell'XML non valido. Potrebbero semplicemente risolverlo.
  2. Quando viene restituito un XML non valido, il decodificatore XML predefinito di Flex è in perdita e genera.
  3. Se si desidera provare a elaborare il proprio decoder. Guarda il xmlDecode membro di HTTPService .

Altri suggerimenti

Beautiful Soup fa questo, ma è scritto in Python. Ovviamente potresti sempre scavare nella fonte e vedere come l'hanno implementata.

Se il numero della classe di errori è piccolo, pre-elaborare l'XML per rimuovere l'errore, quindi passarlo al parser. Ciò consentirà di rimuovere facilmente la soluzione alternativa quando il problema è stato risolto. Nel caso precedente, devi caricare il file come testo, cercare nodi con tag duplicati e rimuovere l'intero nodo dal testo XML.

O semplicemente avvisare il fornitore di servizi Web e attendere - se stanno restituendo XML non valido quasi ogni parser lo soffocerà e dovrebbe avere un incentivo per risolverlo presto.

No, non è possibile ignorare parte di un documento XML non valido con un normale parser XML. È come chiedere al compilatore Flex di ignorare gli errori di sintassi e capire cosa intendeva realmente fare il programmatore. Dovrai scrivere il tuo parser che cerca di dedurre qual è la malformazione e cosa può ignorare.

Onestamente, qualsiasi servizio Web, anche una versione beta, che invia XML non valido non è affidabile. Implica che stanno componendo l'XML "a mano" invece di usare una classe programmatica. Chiunque lo faccia probabilmente farà molti altri errori, in particolare le regressioni. Il tuo tempo è troppo prezioso per dipendere da loro.

Saluti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top