Pergunta

Estou escrevendo um aplicativo aéreo que consome uma API beta Web Service. Às vezes, isso me apireTurna Um nó XML e ActionScript malformado levantará um erro ao tentar criar o objeto XML a partir dele.

O que tenho feito é apenas tentar/pegar o resultado e ignorar toda a resposta se o XML for ruim, mas eu poderia simplesmente ignorar o nó malformado.

Por exemplo:

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

Veja essa tag? Se eu fosse algo assim, gostaria de pular a música inteira e conseguir a próxima.

Existe alguma maneira de conseguir isso?

Foi útil?

Solução

  1. Escreva para o provedor de serviços da web. Conte a eles sobre o XML malformado. Eles podem simplesmente consertar isso.
  2. Quando um XML malformado é transmitido de volta, o decodificador XML padrão do Flex está perdido e lança.
  3. Se você quiser tentar processar, role seu próprio decodificador. Veja o xmlDecode membro de HTTPService.

Outras dicas

Linda sopa Faz isso, mas está escrito em Python. É claro que você sempre poderia cavar a fonte e ver como eles a implementaram.

Se o número de classe de erros for pequeno, pré-processo o XML para remover o erro, entregue-o ao seu analisador. Isso permitirá que você remova a solução alternativa facilmente quando o problema for corrigido. No caso acima, você carregaria o arquivo como texto, procure nós com tags duplicadas e apenas remove o nó inteiro do texto XML.

Ou apenas notifique o provedor de serviços da Web e espere - se eles estiverem retornando o XML malformado praticamente todos os analisadores irão sufocar e o incentivo deve ter um incentivo para corrigi -lo em breve.

Não, você não pode ignorar parte de um documento XML malformado com um analisador XML normal. É como pedir ao compilador Flex para ignorar erros de sintaxe e descobrir o que o codificador realmente queria fazer. Você terá que escrever seu próprio analisador que tenta inferir qual é a malformação e o que ele pode ignorar.

Honestamente, qualquer serviço da web, mesmo uma versão beta, que envia XML ruim não é confiável. Isso implica que eles estão compondo o XML "manualmente" em vez de usar uma classe programática. Qualquer pessoa que faça isso provavelmente cometerá muitos outros erros, especialmente as regressões. Seu tempo é valioso demais para depender deles.

Felicidades

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top