2010-03-06 84 views
6

我確定它應該很明顯,但我可以在我的問題中找到任何參考。 Scala XML使用什麼底層技術?它是類似於DOM還是SAX或StAX?處理大型文檔時應該注意哪些性能處罰? StAX仍然更有效率嗎?Scala XML支持如何工作?

在此先感謝。

回答

7

可以使用scala.xml.pull.XMLEventReader處理大型文檔(幾百MB)。請參閱nightly scaladoc(假設您將使用2.8)。這是使用像StAX這樣的解析器模型。

一般來說,與Java相比,Scala在處理XML時正在做自己的事情。 XML是不可變的。你也可以直接在你的Scala代碼中使用XML文字,這樣可以提高代碼的可讀性。

迴應評論,XML.load使用javax.xml.parsers。{SAXParser,SAXParserFactory}作爲基礎技術。我還假設生成的xml被加載到內存中。

+0

謝謝。我忘了提及我的問題只被認爲是解析('XML.load()'方法,更確切地說是相應的'NodeSeq') - 我想如果我使用這個方法,整個文檔都會被加載和解析API? – incarnate 2010-03-06 10:19:45

+0

再次感謝您的補充,我正在尋找答案。 – incarnate 2010-03-06 15:28:03

2

斯卡拉做它自己的事情。大多數XML模型都是可變的,並且不能很好地轉化爲不變性(因爲它們大多數都跟蹤父代)。

Here's一篇關於它的文章。