[英]How can I parse nested elements in SAX Parser in java?
我想使用以下格式的java中的SAX解析器來解析XML文件:
<Deals>
<Deal>
<id> 10</id>
<title> title </title>
<city>
<id> 1 </id>
...
</city>
</Deal>
...
</Deals>
我很難區分交易節點的id元素和城市節點的id元素。
您可以做的一件事(我已經看過並使用過它-我不確定這是最有效或最有效的方法,但是它確實有效)是在解析器中維護某些狀態,無論該狀態是一組已定義的狀態或一些布爾標志,它們描述您在文檔中的位置。 例如,您可能有:
boolean inDeals = false;
boolean inDeal = false;
boolean inCity = false;
然后,在startElement回調中,如果開始標記為Deals
,則將inDeals
設置為true。 對於Deal
和city
。 在endElement回調中,進行相反操作(例如,結束標記== Deals
,將inDeals
設置回false)。 在您的character方法中,或者您正在處理標簽的方法中,只需根據當時解析器的狀態進行處理即可。 例如:
if(inDeal) {
if(inCity) {
cityId = /*the characters*/;
} else dealId = /*the characters*/;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.