2010-03-06 5 views
6

Ich bin sicher, dass es offensichtlich sein sollte, aber ich konnte irgendwelche Hinweise auf meine Frage finden. Welche zugrunde liegende Technologie verwendet Scala XML? Ist es etwas DOM-artiges oder SAX-like oder StAX? Welche Leistungseinbußen sollte ich bei der Verarbeitung großer Dokumente beachten? Ist StAX noch effizienter?Wie funktioniert die Scala XML-Unterstützung?

Vielen Dank im Voraus.

Antwort

7

Große Dokumente (mehrere hundert MB) können mit scala.xml.pull.XMLEventReader verarbeitet werden. Siehe nightly scaladoc (vorausgesetzt, Sie verwenden 2,8). Dies verwendet ein Pull-Parser-Modell wie StAX.

Im Vergleich zu Java macht Scala im Umgang mit XML eine eigene Sache. Das XML ist unveränderlich. Außerdem können Sie XML-Literale direkt in Ihrem Scala-Code verwenden, wodurch der Code besser lesbar wird.

Als Reaktion auf den Kommentar verwendet XML.load javax.xml.parsers. {SAXParser, SAXParserFactory} als zugrunde liegende Technologie. Ich nehme auch an, dass das resultierende xml in Speicher geladen wird.

+0

Vielen Dank. Ich habe vergessen zu erwähnen, dass meine Frage nur für das Parsen gilt (die 'XML.load()' -Methode, um genau zu sein, und das entsprechende 'NodeSeq'-Zeug). Ich nehme an, dass das ganze Dokument geladen und geparst wird, wenn ich dieses benutze API? – incarnate

+0

Nochmals vielen Dank, Ihre Ergänzung ist eine Antwort, die ich gesucht habe. – incarnate

2

Scala macht ihr eigenes Ding. Die meisten XML-Modelle da draußen sind veränderbar und lassen sich nicht gut in Unveränderlichkeit übersetzen (weil sie meist die Eltern verfolgen).

Here's ein Papier darüber.

Verwandte Themen