2011-07-19 31 views
0

我有一個很大的xml文件,我不想分析它,我只是想存儲<information>...</information>之間的每個字符,它們是xml文件中的標記。如何從Java中的xml文件中提取大字符

我該怎麼做?

+0

您是否在意像'&'這樣的實體顯示爲一個字符還是5?您是否在意您指定的標籤之間是否有其他標籤?如果對這些問題的答案是「是」,那麼你想使用解析器。否則將文件讀入字符串並搜索標籤。 – parsifal

+0

我用一個字符串緩衝區來加載xml文件,它只能加載xml文件的一半......我認爲字符串緩衝區被假設爲很大 – dronyx

+0

如果你的意思是你說的話,你可以簡單地使用一個正則表達式。 – bdares

回答

0

您可能想解釋爲什麼您不想解析它,因爲這有助於建議其他解決方案。這就是說,如果您可以爲該節點構建XPath,那麼您始終可以使用XPath獲取該信息。請參閱this tutorial

UPDATE

鑑於新的信息,這是不是你想要的解決方案。如果您想將xml作爲字符串處理,請將其讀入到StringBuilder(StringBuffer的更快,線程不安全的版本)中,這是您的最佳選擇。如果您在使用StringBuffer時遇到問題,請發佈您嘗試的代碼和錯誤消息。它的最大尺寸是java.lang.Integer.MAX_VALUE這是2147483647.

+0

我不想解析它,因爲我想保留每一個字符,例如像標籤<>和屬性..等等我想到Xpath但我從來沒有使用它 – dronyx

2

如果問題是您嘗試提取的數據適合內存,但整個XML文件不適用,請使用流式解析器(如XPP)。

1

無法在不解析文件的情況下在<information>元素中準確找到字符。您可以在99%的時間內完成某些工作,但如果某人執行了您沒有想到的事情,例如在開始標記中放入空白,或者註釋掉元素或將<information>元素的一部分在外部實體中。

咬住子彈。如果是XML,則需要使用XML解析器來讀取它。

+0

我不想解析它。我突然想要2個標籤之間的一切。解析它將會丟失我需要的大量數據。我不能只是說這個XML文件,尋找並從那裏獲取一切到? – dronyx

+0

這在理論上是完全可能的,但我不知道用這種方式提供對未解析數據的訪問的XML解析器。也許這表明這是一個不尋常的要求,也許這意味着你應該看看你的問題的替代解決方案? –

0

考慮到您不想使用解析器,而您只是想提取兩個標籤之間的所有字符,我寧願建議您將xml內容作爲字符串提取,並使用簡單的正則表達式匹配來提取兩個標籤之間的部分。

相關問題