Como analisar/ignorar peças XML malformadas?
-
03-07-2019 - |
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 & Stylus <artist>Statik, Jahsonic & 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?
Solução
- Escreva para o provedor de serviços da web. Conte a eles sobre o XML malformado. Eles podem simplesmente consertar isso.
- Quando um XML malformado é transmitido de volta, o decodificador XML padrão do Flex está perdido e lança.
- Se você quiser tentar processar, role seu próprio decodificador. Veja o
xmlDecode
membro deHTTPService
.
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