2013-03-21 112 views
0

有沒有可行的使用默認的處理程序類,以找到一個相應的XML標籤?例如...SAX找到關閉標籤

<Object class="my class"> 
    <Property> 
    <Value>1</Value> 
    </Property> 
</Object> 
<Object class="my next class"> 
    <Property> 
    <Value>1</Value> 
    </Property> 
</Object> 

我想使用的startElement()和endElement()方法,但在較高的水平想不通出來。我所能想到的就是使用一個櫃檯,想看看有沒有人聽說過一種更簡單的方法。我想根據它們的開始和結束時間將這兩個Object類拆分爲2個單獨的字符串。有什麼建議?

+0

是您使用的庫來解析這個XML? – 2013-03-21 20:30:14

+0

import javax.xml.parsers.SAXParser; – 2013-03-21 20:32:18

回答

1

您將需要繼承默認處理程序類(無論如何,在startElementendElement期間您都需要進行任何處理)。當startElement被稱爲爲Object標籤,創建一個對象,並存儲在您的處理程序的實例變量的引用。當endElement被調用時,保存在某個地方的目標和基準設置爲null。同時,您會收到其他startElementendElement事件(用於PropertyValue標籤),操作引用對象。

重複用於第二對象。最後,您將保存對象的兩個不同的實例。

+0

如果我有如果你的方法仍然有效,該怎麼辦? – 2013-03-21 20:42:41

+1

@EricCallan - 如果嵌套了'Object'標籤,則所描述的方法將不起作用。但是,只要稍作改動 - 使用一堆參考文件 - 基本思路就可以發揮作用。當你得到一個對象的'startElement'事件並且已經有一個對象引用時,在創建一個新對象之前將現有引用推入堆棧。在'endElement'事件中,僅當堆棧爲空時纔將引用設置爲'null';否則將其設置爲彈出時彈出的內容。 – 2013-03-21 20:55:14