2010-03-06 11 views
6

Estoy seguro de que debería ser obvio, pero pude encontrar cualquier referencia sobre mi pregunta. ¿Qué tecnología subyacente utiliza Scala XML? ¿Es algo como DOM-like o parecido a SAX o StAX? ¿Qué penalizaciones de rendimiento debo tener en cuenta al procesar documentos grandes? ¿StAX es aún más eficiente?¿Cómo funciona el soporte de Scala XML?

Gracias de antemano.

Respuesta

7

Los documentos grandes (varios cientos de MB) se pueden procesar con scala.xml.pull.XMLEventReader. Consulte nightly scaladoc (suponiendo que usará 2.8). Esto está usando un modelo de análisis de extracción como StAX.

En general, en comparación con Java, Scala está haciendo lo suyo cuando se trata de XML. El XML es inmutable. También puede usar literales XML directamente en su código Scala que tiende a hacer que el código sea más legible.

En respuesta al comentario, XML.load utiliza javax.xml.parsers. {SAXParser, SAXParserFactory} como la tecnología subyacente. También asumo que el xml resultante se carga en la memoria.

+0

Gracias. Me olvidé de mencionar que mi pregunta solo se considera para el análisis (el método 'XML.load()', para ser precisos, y el correspondiente 'NodeSeq') - Supongo que todo el documento se carga y se analiza si uso esto API? – incarnate

+0

Gracias de nuevo, su adición es una respuesta que estaba buscando. – incarnate

2

Scala hace su propia cosa. La mayoría de los modelos XML que existen son mutables, y no se traducen bien a la inmutabilidad (porque hacen un seguimiento de los padres, principalmente).

Here's un documento al respecto.

Cuestiones relacionadas