2009-08-17 66 views
2

我有一個由SAP返回的大XML數據。其中,我只需要幾個節點,可能是返回數據的30%。在Java中過濾XML節點| XSLT或解析器

谷歌搜索後,我才知道,我可以通過兩種方式過濾節點:

  1. 應用XSLT模板 - 已經看到了一些不錯的解決方案,這是我想要的,只有這個網站。

  2. 使用解析器 - 使用JDOM或SAX解析器。

這是「過濾XML節點」的有效方法嗎?

感謝

回答

4

SAX解析器將是最快,最有效的(在你不需要將整個文件讀入內存,並對其進行處理)。

XSLT將可能是一個更好的解決方案,因爲您只需要一個identity transform(用於複製輸入文檔)和幾個模板來複制所需的位。

就我個人而言,我會用SAX解析器。

2

StAX API可能會滿足您的需求 - 看看StreamFilterEventFilter。與SAX相比,它的優勢在於其拉式模型使得當您解析了所有您想要的數據而不訴諸於拋出異常等人爲機制時更容易退出處理。

0

如果你的僱主負擔得起SAP,那麼他們當然可以承擔Saxon,這是一個XSLT處理器,可以處理任意長度的數據流。