2007-07-30
scala学习笔记(4) -- xml
关键字: scala functional java xmlscala的特色之一就是内置了对xml语法的支持,通过scala强大的语法加上
xml native支持
例子xml文件
- <body>
- <title>hellotitle>
- <summary>hello worldsummary>
- <chapter><id>2id><desc>special chapterdesc>chapter>
- <chapter><id>3id><desc>chapter 3desc>chapter>
- <chapter><id>id><desc>desc>chapter>
- body>
读取xml文件并循环处理
- // get xml node text, filtered by regular expression and trim it
- def getNodeText(node: Seq[Node]):Option[String] = {
- node match {
- case ele :: Nil if ele.toString() matches "\\S+" => Some( ele.toString().trim() )
- case _ => None
- }
- }
- val contentStream = new BufferedReader(new InputStreamReader(new FileInputStream(filename), "utf8"))
- val doc = XML.load( contentStream )
- var childElements = for (val elem <- doc \\ "body") yield elem child;
- for (val node <- childElements(0)) {
- node match {
- case {title @ _*} => println( getNodeText(title) )
- case {summary @ _*} => println( getNodeText(summary) )
- case {id @ _*}{desc @ _*} => () // processing id and desc
- case _ => ()
- }
- }
直接生成、修改xml
- val id = 3
- val desc = "test"
- var node = <body><chapter><id>{id}id><desc>{desc}desc>chapter>body>
- val newnode = node match {
- case <body><chapter><id>{id1 @ _*}id><desc>{desc1 @ _*}desc>chapter>body> =>
- <body><chapter><id>2id><desc>new {desc1}desc>chapter>body>
- }
看起来是不是很像模板语言的语法?
发表评论
- 浏览: 10113 次
- 性别:

- 来自: 北京

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
在scala里调用Hibernate ...
是在JVM上的一种函数式语言,和java可以互相调用,http://www.sc ...
-- by fakechris -
scala学习笔记(1)
用了 Java 的实现描述语法我知道;不过利用了虚类,确实有点新意啊。
-- by Lich_Ray -
scala学习笔记(1)
实际上String=>Unit 是一个scala的trait,相当于java的接 ...
-- by fakechris -
scala学习笔记(1)
var fn = new ( String=>Unit ) { def ap ...
-- by Lich_Ray -
python的小工具,把hibern ...
嗯,输入太工整了正则表达式也就能处理这么工整的代码了,格式比较乱的还是要上ast ...
-- by fakechris






评论排行榜