KXML嵌套解析的问题
比如说一个XML文件这样:
<phone>
<shouji>
<cl> 12 </cl>
<bl> 12 </bl>
</shouji>
<dianhua>
<cl> 12 </cl>
<bl> 12 </bl>
</dianhua>
</phone>
我想要解析shouji节点中的cl和bl,不要dianhua节点中的cl和bl
解析方法:
public void parsekXMLItems( XmlParser parser, Vector items )throws
IOException {
boolean inItem = false;
boolean inItem1 = false;
while( true ){
ParseEvent event = parser.read();
switch( event.getType() ){
case Xml.START_TAG:
if( event.getName().equals( str1 )||event.getName().equals( str2 )){
while( true ){
ParseEvent event1 = parser.read();
switch( event1.getType() ){
case Xml.START_TAG:
if( event1.getName().equals( str3 )||event1.getName().equals( str4 )){ inItem1 = true;
}
break;
case Xml.END_TAG:
if( event1.getName().equals( str3 )|| event1.getName().equals( str4 )){
inItem1 = false;
}
break;
case Xml.TEXT:
if( inItem1 ){
chinese = new String(event1.getText().getBytes( "GBK "), "utf-8 ");
items.addElement(chinese);}
break;
case Xml.END_DOCUMENT:
return;
}
inItem = true;
}}
break;
case Xml.END_TAG:
if( event.getName().equals( str1 )|| event.getName().equals( str2 )){
inItem = false;}
break;
case Xml.TEXT:
if( inItem ){
chinese = new String(event.getText().getBytes( "GBK "), "utf-8 ");
items.addElement(chinese);
}
break;
case Xml.END_DOCUMENT:
return;
}}
}
这就是我现在用来解析的方法,现在是这样写的话,比如我STR1为shouji,str2为空,str3为cl,str4为bl,现在是这样写可以循环解析了,可是要把XML文件的shouji这个节点放到dianhua节点下,要不然解析的就是全部的cl和bl,要是放在dianhua节点下就能解析为shouji中的cl和bl,不知道为什么会这样的
------解决方案--------------------你这个方法好麻烦,呵
------解决方案--------------------使用一个 Stack