Skip to content

Commit

Permalink
Merge pull request #285 from 2m/wip-xml-parser-2m
Browse files Browse the repository at this point in the history
XML Parser from akka-stream-contrib
  • Loading branch information
2m authored May 17, 2017
2 parents f25e3da + 93d9fda commit 82bd041
Show file tree
Hide file tree
Showing 11 changed files with 972 additions and 1 deletion.
10 changes: 9 additions & 1 deletion build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ lazy val alpakka = project
simpleCodecs,
sns,
sqs,
sse)
sse,
xml)

lazy val amqp = project
.enablePlugins(AutomateHeaderPlugin)
Expand Down Expand Up @@ -154,6 +155,13 @@ lazy val sse = project
Dependencies.Sse
)

lazy val xml = project
.enablePlugins(AutomateHeaderPlugin)
.settings(
name := "akka-stream-alpakka-xml",
Dependencies.Xml
)

val Local = config("local")
val defaultParadoxSettings: Seq[Setting[_]] = Seq(
paradoxTheme := Some(builtinParadoxTheme("generic")),
Expand Down
1 change: 1 addition & 0 deletions docs/src/main/paradox/data-transformations.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

* [Comma Separated Files - CSV](csv.md)
* [RecordIO Framing](recordio.md)
* [Extensible Markup Language - XML](xml.md)

@@@

Expand Down
69 changes: 69 additions & 0 deletions docs/src/main/paradox/xml.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# Extensible Markup Language - XML

XML parsing module offers Flows for parsing and processing parsed XML documents.

## Artifacts

sbt
: @@@vars
```scala
libraryDependencies += "com.lightbend.akka" %% "akka-stream-alpakka-xml" % "$version$"
```
@@@

Maven
: @@@vars
```xml
<dependency>
<groupId>com.lightbend.akka</groupId>
<artifactId>akka-stream-alpakka-xml_$scalaBinaryVersion$</artifactId>
<version>$version$</version>
</dependency>
```
@@@

Gradle
: @@@vars
```gradle
dependencies {
compile group: "com.lightbend.akka", name: "akka-stream-alpakka-xml_$scalaBinaryVersion$", version: "$version$"
}
```
@@@

## XML parsing

XML processing pipeline starts with an @scaladoc[XmlParsing.parser](akka.stream.alpakka.xml.scaladsl.XmlParsing$) flow which parses a stream of @scaladoc[ByteString](akka.util.ByteString)s to XML parser events.

Scala
: @@snip (../../../../xml/src/test/scala/akka/stream/alpakka/xml/scaladsl/XmlProcessingTest.scala) { #parser }

Java
: @@snip (../../../../xml/src/test/java/akka/stream/alpakka/xml/javadsl/XmlParsingTest.java) { #parser }

To parse an XML document run XML document source with this parser.

Scala
: @@snip (../../../../xml/src/test/scala/akka/stream/alpakka/xml/scaladsl/XmlProcessingTest.scala) { #parser-usage }

Java
: @@snip (../../../../xml/src/test/java/akka/stream/alpakka/xml/javadsl/XmlParsingTest.java) { #parser-usage }

## XML Subslice

Use @scaladoc[XmlParsing.subslice](akka.stream.alpakka.xml.scaladsl.XmlParsing$) to filter out all elements not corresponding to a certain path.


Scala
: @@snip (../../../../xml/src/test/scala/akka/stream/alpakka/xml/scaladsl/XmlSubsliceTest.scala) { #subslice }

Java
: @@snip (../../../../xml/src/test/java/akka/stream/alpakka/xml/javadsl/XmlParsingTest.java) { #subslice }

To get a subslice of an XML document run XML document source with this parser.

Scala
: @@snip (../../../../xml/src/test/scala/akka/stream/alpakka/xml/scaladsl/XmlSubsliceTest.scala) { #subslice-usage }

Java
: @@snip (../../../../xml/src/test/java/akka/stream/alpakka/xml/javadsl/XmlParsingTest.java) { #subslice-usage }
7 changes: 7 additions & 0 deletions project/Dependencies.scala
Original file line number Diff line number Diff line change
Expand Up @@ -149,4 +149,11 @@ object Dependencies {
"de.heikoseeberger" %% "akka-http-circe" % "1.11.0" // ApacheV2
)
)

val Xml = Seq(
libraryDependencies ++= Seq(
"com.fasterxml" % "aalto-xml" % "1.0.0", // ApacheV2,
"org.scala-lang.modules" %% "scala-java8-compat" % "0.8.0" // BSD-style
)
)
}
Loading

0 comments on commit 82bd041

Please sign in to comment.