Android: How Can I display all XML values of same tag name

前端 未结 4 1720
Happy的楠姐
Happy的楠姐 2021-01-20 15:43

I have the ff. XML from a URL:

 

    
                 


        
4条回答
  •  情书的邮戳
    2021-01-20 16:06

    You were close. Since you have many PhoneBookeEntrys you need to store them somewhere:

    public class ExampleHandler extends DefaultHandler{
    
     // ===========================================================
     // Fields
     // ===========================================================
    
     private boolean in_outertag = false;
     private boolean in_innertag = false;
     private boolean in_firstname = false;
     private boolean in_lastname= false;
     private boolean in_Address=false;
    
     private ParsedExampleDataSet myParsedExampleDataSet = new ParsedExampleDataSet();
     private List allSets = new ArrayList();
    
     // ===========================================================
     // Getter & Setter
     // ===========================================================
    
     public ParsedExampleDataSet getParsedData() {
          return this.myParsedExampleDataSet;
     }
    
     // ===========================================================
     // Methods
     // ===========================================================
    
     /** Gets be called on opening tags like:
      * 
      * Can provide attribute(s), when xml was like:
      * */
     @Override
     public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
    
        if (localName.equals("PhoneBook")) {
            this.in_outertag = true;
        }else if (localName.equals("PhonebookEntry")) {
            this.in_innertag = true;
            this.myParsedExampleDataSet = new ParsedExampleDataSet();
        }else if (localName.equals("firstname")) {
            this.in_firstname = true;
        }else if (localName.equals("lastname"))  {
            this.in_lastname= true;
        }else if(localName.equals("Address"))  {
            this.in_Address= true;
        } 
    
     }
    
     /** Gets be called on closing tags like:
      *  */
     @Override
     public void endElement(String namespaceURI, String localName, String qName)
               throws SAXException {
          if (localName.equals("Phonebook")) {
               this.in_outertag = false;
          }else if (localName.equals("PhonebookEntry")) {
               this.in_innertag = false;
               allSets.add(myParsedExampleDataSet);
          }else if (localName.equals("firstname")) {
               this.in_firstname = false;
          }else if (localName.equals("lastname"))  {
              this.in_lastname= false;
          }else if(localName.equals("Address"))  {
              this.in_Address= false;
          }
     }
    
     /** Gets be called on the following structure:
      * characters */
     @Override
    public void characters(char ch[], int start, int length) {
          if(this.in_firstname){
          myParsedExampleDataSet.setfirstname(new String(ch, start, length));
          }
          if(this.in_lastname){
          myParsedExampleDataSet.setlastname(new String(ch, start, length));
          }
          if(this.in_Address){
              myParsedExampleDataSet.setAddress(new String(ch, start, length));
          }
    }
    }
    

提交回复
热议问题