2010-08-07 22 views
0

我正在使用解析器解析大型XML文檔(org.xmlpull.v1.XmlPullParser)。當我到達特定的節點時,我想抓住它和它的所有孩子的文本塊(或者只是孩子也可以)並保存爲字符串。什麼是實現這一目標的有效方式?有什麼比(本質上)buffer.append('<').append(xpp.getName()).append('>')更好?Android XML - 在解析過程中保存文本塊

下面是一個例子

<root id="root"> 
    <node> 
     <grab-all-inside> 
      <!-- bunch of nodes, attributes etc. that needs to be saved as text --> 
     </grab-all-inside> 
    </node> 
    <node> 
     <grab-all-inside> 
      <!-- bunch of nodes, attributes etc. that needs to be saved as text --> 
     </grab-all-inside> 
    </node> 
    <node> 
     <grab-all-inside> 
      <!-- bunch of nodes, attributes etc. that needs to be saved as text --> 
     </grab-all-inside> 
    </node> 
</root> 

附:如果您認爲我最好使用其他解析器或技術,我願意提供建議。正如旁註 - 這些文本塊將被序列化爲db,前提是在某些時候這些將被提取和解析

回答

1

我懷疑你的append()調用一樣好。這些都是拉解析器中的每個單獨事件。

如果這是一個XML資源,請考慮使用字符串資源。我知道,對於Android 1.6+,它們可以包含淺色HTML標記,並且可能包含任意標記,只是將其視爲字符串 - 尚未嘗試過。或者,爲每個節點的內容創建原始資源並以字符串形式讀取整個內容。

+0

我必須支持1.5 - 根據Flurry,它仍然是我應用程序流量的12%。我以XML的形式獲取提要,解析是微不足道的,但相當複雜。我想現金數量有限的更新,我有一種感覺,而不是monkeysying與一堆表保存一堆對象,我最好將文本片段保存到一個列,然後使用相同的例程重新解析它。但它讓我認爲我需要重新從零件中重新分配XML片段,當它可用時 – Bostone 2010-08-14 06:20:10

+0

是的 - 最終使用了緩衝,謝謝Mark – Bostone 2010-08-28 00:19:41