adSense 900*70


Scala Tutorial 번역 (XML Proccessing) Scala

XML Processing

Scala를 사용해서 쉽게 XML문서를 생성 및 파싱 그리고 처리할 수 있다. Scala에서 XML 데이터를 표현하는 방법은 아래와 같다.


  • Generic data 표현 (xml 자체를 Scala코드처럼 사용할 수 있는 표현법으로 이해된다.)
  • Data-specifi data 표현 (데이터에 초첨을 맞춘 표현법으로 이해된다.)

아래와 같은 HTML(xml과 동일한 표기법이다)이 주어졌을때 이를 Scala 코드로 옮겨보자

Runtime Representation

HTML(XML)
<html>
<head>
<title>Hello XHTML world</title>
</head>
<body>
<h1>Hello world</h1>
<p><a href="http://scala-lang.org/">Scala</a> talks XHTML</p>
</body>
</html>
Scala codes
object XmlTest1 extends App {
val page =
<html>
<head>
<title>Hello XHTML world</title>
</head>
<body>
<h1>Hello world</h1>
<h1>Scala is cool</h1>
<p><a href="http://scala-lang.org/">Scala</a> talks XHTML</p>
</body>
</html>
println(page.toString());

println("type of page: "+ page.getClass)
println("body h1 text " +( page \\"body" \\ "h1").head.text) // body 하위의 첫번째 h1의 text를 받아온다.
}

위의 코드를 실행하게 되면 HTML의 내용이 그래도 표시되게 된다. 또한 결과를 보면 알겠지만 page의 타입은 scala.xml.Elem이다.

또한 아래의 예제처럼 Scala 코드와 XML을 함께 섞어서 사용할 수 있다.

object XmlTest2 extends App {
import scala.xml._
val df = java.text.DateFormat.getDateInstance()
val dateString = df.format(java.util.Calendar.getInstance().getTime())
def theDate(name: String) = {
<dateMsg addressedTo={name}>
Hello, {name}! Today is {dateString}
</dateMsg>
}
println(theDate("John").toString())
}
output
<dateMsg addressedTo="John">
Hello, John! Today is 2017. 1. 24
</dateMsg>

Data Binding

많은 경우 XML문서에 대한 DTD에 해당하는 Scala class들을 선언하여 XML문서를 파싱 및 처리 그리고 저장 한다. Scala는 DTD문서들을 Scala class들로 변환할 수 있는 사용하기 쉬운 tool들을 제공한다. 이런 툴 중 하나인 schema2src툴에 대한 문서는 Burak’s draft scala xml book을 참조하면 된다.


덧글

댓글 입력 영역


side adsense

adSense 900*70