Wie analysiere ich ein XML-Dokument als Stream mit Scala? Ich habe die Stax-API in Java verwendet, um dies zu erreichen, aber ich würde gerne wissen, ob es eine "skalare" Möglichkeit gibt, dies zu tun.Wie analysiere ich ein XML-Dokument als Stream mit Scala?
Antwort
Verwenden Paket scala.xml.pull. Schnipsel aus dem Scaladoc genommen für Scala 2.8:
import scala.xml.pull._
import scala.io.Source
object reader {
val src = Source.fromString("<hello><world/></hello>")
val er = new XMLEventReader(src)
def main(args: Array[String]) {
while (er.hasNext)
Console.println(er.next)
}
}
Sie toIterator
oder toStream
auf er
nennen kann eine echte Iterator
oder Stream
zu bekommen.
Und hier ist die 2.7-Version, die etwas anders ist. Das Testen scheint jedoch darauf hinzudeuten, dass das Ende des Streams nicht erkannt wird, im Gegensatz zu Scala 2.8.
import scala.xml.pull._
import scala.io.Source
object reader {
val src = Source.fromString("<hello><world/></hello>")
val er = new XMLEventReader().initialize(src)
def main(args: Array[String]) {
while (er.hasNext)
Console.println(er.next)
}
}
Ich musste meinen Code ändern, um val = new XMLEventReader(). Initialize (src), aber es sieht aus wie es funktioniert. Vielen Dank! – ScArcher2
der 2.7 xml.pull ist wild geborst und sollte von allen, außer den sehr Mutigen ganz gemieden werden. 2.8 Situation ist viel besser. –
scala.xml.pull ist auch jetzt noch nicht wirklich toll; Ich habe vorgeschlagen, es abzulehnen: https://github.com/scala/scala-xml/issues/193 –
scala.xml.XML.loadFile(fileName: String)
scala.xml.XML.load(url: URL)
scala.xml.XML.load(reader: Reader)
scala.xml.XML.load(stream: InputStream)
Es gibt andere ...
Wird das gesamte Dokument nicht in den Speicher geladen? Ich möchte es analysieren und behandeln, wie ich es empfange und nicht das gesamte Dokument zuerst im Speicher ablegen. – ScArcher2
@ ScArcher2: Ja, das sind keine Streaming-APIs. –
- 1. Wie analysiere ich ein Datum mit Millisekunden?
- 2. DataContractJsonSerializer.ReadObject (Stream-Stream): Kann ich mehr als ein Objekt lesen?
- 3. Wie analysiere ich ein PCRE-Muster?
- 4. Wie analysiere ich ein Standarddatum in GMT?
- 5. fügen Sie ein Stammelement mit Xmldokument in C# .net
- 6. Warum ist ein ungeordneter Stream schneller als ein bestellter Stream?
- 7. Wie bekomme und analysiere ich ein JSON-Objekt mit Volley
- 8. Wie analysiere ich Json-Objekt mit Python?
- 9. In Visual Studio (2010) Editor wie kann ich andere Dateierweiterungen als xmldokument (wie .xml) sehen
- 10. Wie analysiere ich partielles HTML?
- 11. Wie man einen Java-Stream in einen Scala-Stream konvertiert
- 12. Wie analysiere ich diesen JSON mit Aeson?
- 13. Wie analysiere ich diese Daten mit Fabric?
- 14. Wie analysiere ich RSS mit beautifulsoup?
- 15. Wie analysiere ich die als String gespeicherte Antwort von httppost
- 16. Wie verteile ich ein Scala-Makro als Projekt?
- 17. Play Framework Scala: Wie Stream Request Body
- 18. Wie analysiere ich "/ Date (1459934700000) /" in ein JavaScript-Date-Objekt?
- 19. Analysiere ein select-Tag mit regex (php)
- 20. Analysiere ein XML-Dokument mit "dynamischen" Knoten
- 21. Wie analysiere ich YAML in ein Hash/Objekt?
- 22. Wie analysiere ich ein Array von JSON in Swift?
- 23. Wie analysiere ich Inhalt mit regulärem Ausdruck mit jQuery?
- 24. Wie kann ich ein ungewöhnliches Datum Zeichenfolge analysiere
- 25. Wie verwende ich ein @ serializable scala-Objekt?
- 26. Warum bekomme ich Stream als System.IO.UnmanagedMemoryStream?
- 27. Wie analysiere ich dieses PHP stdClass Objekt?
- 28. Wie kann ich ein Scala-Projekt als Scala-Anwendung standardmäßig in der Eclipse-IDE ausführen?
- 29. Wie analysiere ich Anfragedaten in Python-Django?
- 30. Wie analysiere ich eine dtd-Datei
Kennt jemand ein komplizierteres/vollständigeres Beispiel als das Parsen von "Hallo Welt"? – ScArcher2
Ich wusste von dieser Sache, weil jemand, mit dem ich einmal gesprochen habe, es benutzte. Was versuchst du zu tun und welche Probleme hast du damit? Stellen Sie weitere Fragen. Es wird es der nächsten Person erleichtern, die es benutzen möchte. :-) –