2010-03-15 54 views
0

Java平台中解析字符串中的xml的最快方法(最快性能)是什么?什么是解析XML的最快方法?

文件大小可以在25kb左右。

约束是我没有提供一个XML文件,而是我必须解析XML字符串!

+0

你的XML是invaid并且不能正确显示。 – 2010-03-15 10:12:30

+3

另外,你使用的是什么平台语言/库? – 2010-03-15 10:12:53

+0

如果你的XML真的被破坏了,那么某种字符串匹配可能是唯一的方法。但是你可能会遇到更多问题。请提供更多破碎的'XML'样本,以便有更多的工作要做。 – 2010-03-15 10:18:06

回答

3

通常,您有三种选择:DOMSAXStAX。 DOM较慢。据说提供了“具有SAX效率的DOM易用性”。但是,如果你展示的文件是整个文件 - 这真的没有关系。使用较大的文件时,性能差异很重要。

2

您应该从解析理论适用于您的案例一般概念。

主要解析技术的复杂性的解释可用in this article

关于Java,here是Sun,Oracle和Apache在Java中的XML解析器之间的比较。

从文章的摘要阅读:

他XML解析器世界是一个动态的。 随着标准的变化,解析器 也随之改变 - XML解析器 变得更加复杂。对于大多数 编程项目,解析器(至少为 )必须支持DOM Level 2,SAX 2,XSLT和Namespaces。这里讨论的所有 解析器提供了这些 功能;然而,在性能, 标准,有 明显的差异,并符合 标准。在本文中,我将 比较来自Sun, Oracle和Apache Software Foundation的最新解析器。

其余分析可用here

3

您可以使用XML字符串的解析结果构建DOM树。这里是一个Java方法来完成你想要的:

private static Document ParseXMLString(String xmlString) { 
    try { 
     DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder db = fac.newDocumentBuilder(); 
     InputSource inStream = new InputSource(); 
     inStream.setCharacterStream(new StringReader(xmlString)); 
     Document doc = db.parse(inStream); 
     return doc; 
    } 
    catch (Exception e) { 
     System.out.println(e); 
    } 
} 
相关问题