scala – 懒惰地解析非常大的xml
发布时间:2020-12-16 09:27:53 所属栏目:安全 来源:网络整理
导读:我有一个巨大的xml文件(40 gbs).我想从中提取一些字段而不将整个文件加载到内存中.有什么建议么? 解决方法 基于SAXParser here教程的XMLEventReader的快速示例(由Rinat Tainov发布). 我确信它可以做得更好但只是为了显示基本用法: import scala.io.Sourcei
我有一个巨大的xml文件(40 gbs).我想从中提取一些字段而不将整个文件加载到内存中.有什么建议么?
解决方法
基于SAXParser
here教程的XMLEventReader的快速示例(由Rinat Tainov发布).
我确信它可以做得更好但只是为了显示基本用法: import scala.io.Source import scala.xml.pull._ object Main extends App { val xml = new XMLEventReader(Source.fromFile("test.xml")) def printText(text: String,currNode: List[String]) { currNode match { case List("firstname","staff","company") => println("First Name: " + text) case List("lastname","company") => println("Last Name: " + text) case List("nickname","company") => println("Nick Name: " + text) case List("salary","company") => println("Salary: " + text) case _ => () } } def parse(xml: XMLEventReader) { def loop(currNode: List[String]) { if (xml.hasNext) { xml.next match { case EvElemStart(_,label,_,_) => println("Start element: " + label) loop(label :: currNode) case EvElemEnd(_,label) => println("End element: " + label) loop(currNode.tail) case EvText(text) => printText(text,currNode) loop(currNode) case _ => loop(currNode) } } } loop(List.empty) } parse(xml) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- AngularJS:使用call(或apply)的Controller继承
- ssh – bin / sh,bin / bash,sbin / nologin,bin / tcsh等之
- Unix&Linux大学教程
- 如何通过bash shell cin c string> = 1024个字符?
- 基于.net webservices和Flex LineChart组件的动态数据监控
- BootStrap进度条
- twitter-bootstrap – 引导模态对话框,show.bs.modal事件re
- bash – 如何自动将打包机输出命令链接到变形变量?
- 使用Vim输入Git提交消息时出现问题
- vim – 设置pastetoggle不工作