2010-07-20 208 views
1

我有在以下格式的XML文件:麻煩與SAX解析器

<Query> 
    <map> 
     <value name="val1">1</value> 
     <value name="val2">2</value> 
    </map> 
</Query> 
<Quest> 
    <map> 
     <value name="val1">6</value> 
     <value name="val2">8</value> 
    </map> 
</Quest> 

當我寫我的SAX解析器,我從開始到結束的所有值,但我需要寫一個條件什麼會採用標籤名稱,比如Query/Quest,並且只能獲取特定名稱和值。

我不知道如何添加這個條件,我不需要解析其餘的標籤,一旦我的條件滿足,我的對象被解析。

注意:我正在用Java編寫。

回答

2
  • 在startElement中,根據給定名稱檢查元素名稱。例如,如果您正在查找「查詢」並且名稱是「查詢」,請將某些標誌設置爲true。
  • 在startElement中,如果元素名稱爲「value」並且該標誌爲true,則將名稱和值存儲在地圖中。
  • 在endElement中,如果元素名稱等於「Query」,則將該標誌設置爲false。或者,完全停止解析。
+0

任何想法如何跳過讀取標籤? – Vivek 2010-07-20 11:46:09

+0

隨着薩克斯你不能。你閱讀整個文件,直到你有所有你需要的信息。 – Mark 2010-07-20 11:51:08

0

如果您只想要一組特定元素的數據,那麼基於DOM的解析器,尤其是使用XPath獲取必需字段的解析器可能會更容易。

的XPath庫是jaxen可與多種延遲性肌肉痠痛使用我用JDOM

+0

不幸的是,我只能使用Sax Parser而不需要額外的庫! – Vivek 2010-07-20 11:30:35