如果我有一个像下面这样的大 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>
最佳答案
如果您的文件很大并且您不想将整个文件加载到内存中(即 DOM),那么您可以采用的一种方法是拉式解析路线。如果你想在 scala 中进行拉式解析,寻找“开始元素”事件以检查属性,那么你可以这样做:
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 _ =>
}
遵循这种方法应该确保您的文件不会被读入内存并且应该很快。
关于java - 在 Java 或 Scala 中解析扁平的、大量属性的 xml 的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18188769/