scala学习笔记(4) -- xml

scala的特色之一就是内置了对xml语法的支持,通过scala强大的语法加上
xml native支持

例子xml文件

  1. <body>  
  2. <title>hellotitle>  
  3. <summary>hello worldsummary>  
  4. <chapter><id>2id><desc>special chapterdesc>chapter>  
  5. <chapter><id>3id><desc>chapter 3desc>chapter>  
  6. <chapter><id>id><desc>desc>chapter>  
  7. body>  


读取xml文件并循环处理

  1. // get xml node text, filtered by regular expression and trim it       
  2. def getNodeText(node: Seq[Node]):Option[String] = {       
  3.   node match {       
  4.     case ele :: Nil if ele.toString() matches "\\S+" => Some( ele.toString().trim() )       
  5.     case _ => None       
  6.   }       
  7. }       
  8. val contentStream = new BufferedReader(new InputStreamReader(new FileInputStream(filename), "utf8"))       
  9. val doc = XML.load( contentStream  )       
  10. var childElements = for (val elem <- doc \\ "body") yield elem child;       
  11. for (val node <- childElements(0)) {       
  12.   node match {       
  13.     case {title @ _*} => println( getNodeText(title) )       
  14.     case {summary @ _*} => println( getNodeText(summary) )       
  15.     case {id @ _*}{desc @ _*} => () // processing id and desc       
  16.     case _ => ()       
  17.   }       
  18. }     
直接生成、修改xml
  1. val id = 3  
  2. val desc = "test"  
  3. var node = <body><chapter><id>{id}id><desc>{desc}desc>chapter>body>  
  4. val newnode = node match {   
  5.   case <body><chapter><id>{id1 @ _*}id><desc>{desc1 @ _*}desc>chapter>body> =>  
  6.     <body><chapter><id>2id><desc>new {desc1}desc>chapter>body>  
  7. }  

 看起来是不是很像模板语言的语法?

 

你可能感兴趣的:(编程,scala,xml)