2010-03-15 96 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); 
    } 
} 
相關問題