Come analizzare un documento XML come uno stream utilizzando Scala? Ho usato l'API Stax in java per realizzare questo, ma mi piacerebbe sapere se c'è un modo "scala" per farlo.Come si analizza un documento XML come uno stream utilizzando Scala?
risposta
usare il pacchetto scala.xml.pull. Snippet preso dal scaladoc per 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)
}
}
È possibile chiamare toIterator
o toStream
su er
per ottenere un vero e proprio Iterator
o Stream
.
Ed ecco la versione 2.7, che è leggermente diversa. Tuttavia, il test sembra indicare che non rileva la fine del flusso, a differenza di 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)
}
}
Ho dovuto cambiare il mio codice in valer = new XMLEventReader(). Initialize (src), ma sembra che funzioni. Grazie! – ScArcher2
il 2.7 xml.pull è selvaggiamente puntinato e dovrebbe essere evitato interamente da tutti tranne i molto coraggiosi. 2.8 situazione è molto migliorata. –
scala.xml.pull non è ancora molto bello anche adesso; Ho proposto di deprecarlo: 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)
ce ne sono altri ...
Non caricherà l'intero documento in memoria? Mi piacerebbe analizzarlo e gestirlo come lo ricevo e non memorizzare l'intero documento in memoria prima. – ScArcher2
@ ScArcher2: Sì, quelle non sono API di streaming. –
- 1. Utilizzando XPath per analizzare un documento XML
- 2. Come scrivere System.Xml.Linq.XElement utilizzando XmlWriter su uno stream
- 3. Come si aggiungono le informazioni del documento xml con scala.xml?
- 4. Come si analizza il servizio Web XML in Swift?
- 5. Come creare un documento XML usando XmlDocument?
- 6. Come creare uno stream da un DirectoryStream
- 7. Analizza XML usando un XSD in PHP
- 8. Come si analizza un pattern PCRE?
- 9. Come si analizza un file .mdmp?
- 10. Come si analizza una durata formattata ISO 8601 utilizzando moment.js?
- 11. Come si crea uno stream vuoto in Gulp?
- 12. Come creare un Drawable da uno stream senza ridimensionarlo?
- 13. Come si analizza un codice HTML in vb.net
- 14. Utilizzando uno schema di riordinare gli elementi di un documento XML in conformità con lo schema
- 15. Come si convalida lo schema di un file XML utilizzando Scala?
- 16. Documento XML Parse in C#
- 17. utilizzando parser SAX, come si analizza un file xml che ha lo stesso nome ma in elementi diversi?
- 18. Analizza xml dalla risposta httppost
- 19. come convertire un Java Stream per una Scala flusso
- 20. rimuovere dichiarazione XML dal documento XML generato utilizzando Java
- 21. Come funziona l'analisi di un documento HTML/XML?
- 22. Come si aggiunge un tipo di documento a un XDocument?
- 23. Firma diretta di un documento di Office Word utilizzando XML
- 24. Come scrivere "tasto invio" su uno stream?
- 25. Come si analizza un formato di file complesso in Delphi? (Non CSV, XML, ecc.)
- 26. Lettura XML da Stream
- 27. Come si chiama un metodo Scala Object utilizzando la riflessione?
- 28. lettura di un documento XML con LINQ
- 29. Come convalidare un documento XML contro un DTD in C#?
- 30. Problema di creazione di un documento XML utilizzando TXMLDocument
Qualcuno sa di un esempio più complesso/completo di parsing "ciao mondo"? – ScArcher2
Sapevo di questa cosa perché qualcuno con cui ho parlato una volta lo stava usando. Cosa stai cercando di fare e quali problemi hai con questo? Fai più domande. Renderà più facile per la prossima persona che vuole usarlo. :-) –