Pregunta

Estoy escribiendo una aplicación de Air que consume una API de servicio web beta. A veces, esta API me devuelve un nodo XML con formato incorrecto y actionscript generará un error cuando intente crear el objeto XML a partir de él.

Lo que he estado haciendo es simplemente intentar / capturar el resultado e ignorar toda la respuesta si el XML es incorrecto, pero podría ignorar el nodo con formato incorrecto.

Por ejemplo:

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

¿Ver esa etiqueta? Si me gustaría algo así, me gustaría omitir toda la canción y obtener la siguiente.

¿Hay alguna manera de que pueda lograr esto?

¿Fue útil?

Solución

  1. Escriba al proveedor de servicios web. Cuéntales sobre el XML mal formado. Podrían simplemente arreglarlo.
  2. Cuando se devuelve un XML con formato incorrecto, el decodificador XML predeterminado de Flex tiene pérdidas y se lanza.
  3. Si desea probar el procesamiento, ruede su propio decodificador. Consulte el xmlDecode miembro de HTTPService .

Otros consejos

Beautiful Soup hace esto, pero está escrito en Python. Por supuesto, siempre puede ir a cavar en la fuente y ver cómo lo implementaron.

Si el número de errores es pequeño, preproduzca el XML para eliminar el error y entréguelo al analizador. Esto le permitirá eliminar fácilmente la solución cuando se solucione el problema. En el caso anterior, cargaría el archivo como texto, buscaría nodos con etiquetas duplicadas y simplemente eliminaría todo el nodo del texto XML.

O simplemente notifique al proveedor de servicios web y espere: si devuelven XML con formato incorrecto, casi todos los analizadores se ahogarán y deberían tener un incentivo para solucionarlo pronto.

No, no puede ignorar parte de un documento XML con formato incorrecto con un analizador XML normal. Es como pedirle al compilador de Flex que ignore los errores de sintaxis y descubra lo que realmente quería hacer el codificador. Tendrá que escribir su propio analizador que intente inferir cuál es la malformación y qué puede ignorar.

Honestamente, cualquier servicio web, incluso una versión beta, que envíe XML incorrecto no es confiable. Implica que están componiendo el XML " a mano " En lugar de usar una clase programática. Cualquier persona que haga eso es probable que cometa muchos otros errores, especialmente regresiones. Tu tiempo es demasiado valioso para depender de ellos.

Saludos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top