Vistritium / garook

Scala library to easily and efficiently process XML elements one by one.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Garook

Scala library to easily and efficiently process large xmls with repetatively occuring elements. The library is using Stax2 to parse and stream xml.

Quickstart

Following example demonstrates usage with support of scala-xml to read repetative elements.

Example xml:

<?xml version="1.0" encoding="UTF-8"?>
<breakfast_menu>
    <food>
        <name>Belgian Waffles</name>
        <price>$5.95</price>
    </food>
    <food>
        <name>Strawberry Belgian Waffles</name>
        <price>$7.95</price>
    </food>
</breakfast_menu>

Scala:

    import scala.util.Using
    import scala.jdk.CollectionConverters._
    
    val xmlInputStream: InputStream = ???
    val names = Using(new Garook().parse(xmlInputStream, new ExactLocalPathMatcher("breakfast_menu.food"))) { iterator =>
      iterator.asScala.map(elem => XML.load(new ByteArrayInputStream(elem)))
        .map(_ \\ "name")
        .map(_.text)
        .toList
    }.get
    
    println(names.mkString(", "))

prints

Belgian Waffles, Strawberry Belgian Waffles

Dependency

libraryDependencies += "io.github.vistritium" %% "garook-xml" % "0.2"

About

Scala library to easily and efficiently process XML elements one by one.


Languages

Language:Scala 98.1%Language:Java 1.9%