如何使用Android的不同父节点解析XML(How to parse xml using diff

2019-08-01 06:15发布

在我的XML文件我有两个或两个以上的父节点,如: -

//父节点比萨饼//属性是1贴贴披萨
//父节点汉堡
//属性是1贴贴汉堡,

每当用户点击比萨饼listview项目,然后用户应该能够查看其他活动的唯一的比萨饼项目清单listview 。 我知道该怎么称呼下一个活动等等,但我想知道我可以在我的Java类中使用不同的父节点,究竟是什么,我需要在我的java类做的修改,请访问以下链接,我使用本教程中,但在这里,他们只使用一个父节点首歌,但我想添加更多,我已经在我的XML文件中添加,但不知道什么是我需要在Java类做的修改。

Answer 1:

carrier.xml ile contains below xml contents
<?xml version="1.0" encoding="utf-8"?>
<carrier>
    <vehicle>
        <vehicle
            cid="1"
            cname="TAXI" />
        <vehivle
            cid="0"
            cname="AUTO" />
   </vehicle>

// In your code 
XmlPullParser xpp=null;
int eventType = 0;
XmlPullParserFactory factory =null;
BufferedReader bufr=null;   
StringBuilder total ="";
     try{           
    bufr = new BufferedReader(new FileReader("/carrier.xml"));
    total = new StringBuilder();
    String line=""; 
    while ((line = bufr.readLine()) != null)
    {     
    total.append(line);
    }                       
    factory = XmlPullParserFactory.newInstance();  
    factory.setNamespaceAware(true);   
    xpp = factory.newPullParser();   
    xpp.setInput(new StringReader(new String(total)));                  
    eventType = xpp.getEventType();             
    }catch(XmlPullParserException e){
    // Log.v("xmlpullparser"," "+e);
    e.printStackTrace();
    }catch(IOException ie){
    // Log.v("IOException"," "+ie);
    ie.printStackTrace();
    }


    try{
    while (eventType != XmlPullParser.END_DOCUMENT){                    
    if(eventType == XmlPullParser.START_TAG){ 
    String Scid="",Scname="";
    int acount=xpp.getAttributeCount();             
    if(acount!=-1){
    for(int x=0;x<acount;x++){                                              
                        if(xpp.getAttributeName(x).equalsIgnoreCase("cid")){
                            Scid=xpp.getAttributeValue(x);                                                                                  
                        }if(xpp.getAttributeName(x).equals("cname")){
                            Scname=xpp.getAttributeValue(x);
                        }
                    }               
    }   
    }       
    eventType = xpp.next();  
    }                               
    }catch(Exception e){        
            e.printStackTrace();
    }

After this you can use the Scid Scname etc in your code as per your convenience


文章来源: How to parse xml using different parent nodes in android