AlbumHandler.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:3k
源码类别:

android开发

开发平台:

Java

  1. package irdc.ex09_08; 
  2. /* import相关class */
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import org.xml.sax.Attributes; 
  6. import org.xml.sax.SAXException; 
  7. import org.xml.sax.helpers.DefaultHandler; 
  8. public class AlbumHandler extends DefaultHandler
  9. {
  10.   private String gphotoURI="";
  11.   private String mediaURI="";
  12.   private boolean in_entry = false;
  13.   private boolean in_title = false;
  14.   private boolean in_id = false;
  15.   private List<String[]> li;
  16.   private String[] s;
  17.   private StringBuffer buf=new StringBuffer();
  18.   /* 将转换成List的XML数据返回 */
  19.   public List<String[]> getParsedData()
  20.   { 
  21.     return li; 
  22.   }
  23.   /* XML文件开始解析时调用此method */
  24.   @Override 
  25.   public void startDocument() throws SAXException
  26.   { 
  27.     li = new ArrayList<String[]>(); 
  28.   }
  29.   
  30.   /* XML文件结束解析时调用此method */
  31.   @Override 
  32.   public void endDocument() throws SAXException
  33.   {
  34.   }
  35.   
  36.   /* 取得prefix的method */
  37.   @Override 
  38.   public void startPrefixMapping(String prefix,String uri)
  39.   {
  40.     if(prefix.equals("gphoto"))
  41.     {
  42.       gphotoURI=uri;
  43.     }
  44.     else if(prefix.equals("media"))
  45.     {
  46.       mediaURI=uri;
  47.     }
  48.   }
  49.   
  50.   /* 解析到Element的开头时调用此method */
  51.   @Override 
  52.   public void startElement(String namespaceURI, String localName, 
  53.                String qName, Attributes atts) throws SAXException
  54.   { 
  55.     if (localName.equals("entry"))
  56.     { 
  57.       this.in_entry = true;
  58.       /* 解析到entry的开头时new一个String[] */
  59.       s=new String[3];
  60.     }
  61.     else if (localName.equals("title"))
  62.     { 
  63.       if(this.in_entry)
  64.       {
  65.         this.in_title = true;
  66.       }
  67.     }
  68.     else if (localName.equals("id"))
  69.     { 
  70.       if(gphotoURI.equals(namespaceURI))
  71.       {
  72.         this.in_id = true;  
  73.       }
  74.     }
  75.     else if (localName.equals("thumbnail"))
  76.     { 
  77.       if(mediaURI.equals(namespaceURI))
  78.       {
  79.         /* 相簿网址 */
  80.         s[1]=atts.getValue("url");
  81.       }
  82.     }
  83.   }
  84.   
  85.   /* 解析到Element的结尾时调用此method */
  86.   @Override 
  87.   public void endElement(String namespaceURI, String localName,
  88.                          String qName) throws SAXException
  89.   { 
  90.     if (localName.equals("entry"))
  91.     { 
  92.       this.in_entry = false;
  93.       /* 解析到item的结尾时将String[]写入List */
  94.       li.add(s);
  95.     }
  96.     else if (localName.equals("title"))
  97.     { 
  98.       if(this.in_entry)
  99.       {
  100.         /* 相簿名称 */
  101.         s[2]=buf.toString().trim();
  102.         buf.setLength(0);
  103.         this.in_title = false;
  104.       }
  105.     }
  106.     else if (localName.equals("id"))
  107.     { 
  108.       if(gphotoURI.equals(namespaceURI))
  109.       {
  110.         /* 相簿ID */
  111.         s[0]=buf.toString().trim();
  112.         buf.setLength(0);
  113.         this.in_id = false;
  114.       }
  115.     }
  116.   }
  117.   
  118.   /* 取得Element的开头结尾中间夹的字符串 */
  119.   @Override 
  120.   public void characters(char ch[], int start, int length)
  121.   { 
  122.     if(this.in_title||this.in_id)
  123.     {
  124.       /* 将char[]添加StringBuffer */
  125.       buf.append(ch,start,length);
  126.     }
  127.   } 
  128. }