[英]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.