use*_*128 1 java performance scala xml-parsing
如果我有一个像下面这样的大xml文件.在Java或Scala中解析它的最快方法是什么.流式传输单个元素很重要,但并非绝对必要
我感兴趣的是从每个结果对象获取属性值.
<Response>
<Result att1="1", att2="2", att3="3", att4="4", att5="5"/>
<Result att1="1", att2="2", att3="3", att4="4", att5="5"/>
<Result att1="1", att2="2", att3="3", att4="4", att5="5"/>
<Result att1="1", att2="2", att3="3", att4="4", att5="5"/>
</Response>
Run Code Online (Sandbox Code Playgroud)
如果您的文件很大并且您不想将整个内容加载到内存(即DOM)中,那么您可以采用的一个路径是拉解析路径.如果你想在scala中进行pull解析,寻找"start element"事件以检查属性,那么你可以这样做:
import scala.io.Source
import java.io.File
import scala.xml.pull.XMLEventReader
import scala.xml.pull.EvElemStart
val src = Source.fromFile(new File(pathToXml))
val reader = new XMLEventReader(src)
reader foreach{
case EvElemStart(_, _, attrs, _) =>
//do something here
case _ =>
}
Run Code Online (Sandbox Code Playgroud)
遵循此方法应确保您的文件不会被读入内存并且应该很快.
| 归档时间: |
|
| 查看次数: |
4277 次 |
| 最近记录: |