如何在java中解析SAX Parser中的嵌套元素?

Zak*_*ria 1 java android saxparser

我想使用以下格式在Java中使用SAX解析器解析XML文件:

<Deals>
  <Deal>
   <id> 10</id>
   <title> title </title>
   <city>
     <id> 1 </id>
     ...
   </city>
  </Deal>
  ...
</Deals>
Run Code Online (Sandbox Code Playgroud)

我有一个问题是要区分Deal Node的id元素和city节点的id元素.

kco*_*ock 5

你可以做的一件事(我已经看到它并使用它 - 我不确定它是最有效或最有效的方法,但它有效)是在你的解析器中保持一些状态,无论它是一个定义的集合状态或一些布尔标志,描述您在文档中的位置.例如,您可能有:

boolean inDeals = false;
boolean inDeal = false;
boolean inCity = false;
Run Code Online (Sandbox Code Playgroud)

然后,在startElement回调中,如果start标记为Deals,则设置inDeals为true.同样的Dealcity.在endElement回调中,执行反向操作(例如,结束标记== Deals,设置inDeals回false).在您的characters方法中,或者您正在处理标记时,只需根据当时解析器的状态进行处理.例如:

if(inDeal) {
    if(inCity) {
        cityId = /*the characters*/;
    } else dealId = /*the characters*/;
}
Run Code Online (Sandbox Code Playgroud)