在用SAX解析XML文件时 只执行了startDocument()方法 
其余几个都执行不到   是哪儿出了问题 android   SAX  XML

解决方案 »

  1.   

    参数对了么public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
    }
      

  2.   

    你最好贴出解析的代码和你的xml
      

  3.   

    这是MainActivity中的内容
    package com.example.activity18;import java.io.IOException;
    import java.io.StringReader;import javax.xml.parsers.ParserConfigurationException;
    import javax.xml.parsers.SAXParserFactory;import org.xml.sax.InputSource;
    import org.xml.sax.SAXException;
    import org.xml.sax.XMLReader;import xmlParse.XmlInfo;
    import xmlParse.XmlParse;import com.example.download.DownLoad;import android.os.Bundle;
    import android.app.Activity;
    import android.app.ListActivity;
    import android.view.Menu;
    import android.view.MenuItem;public class MainActivity extends ListActivity { private XmlParse xmlparse=new XmlParse();
    private static final String strurl="http://10.0.2.2/mldn/a3.xml";
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub
    if(item.getItemId()==1)
    {
    //System.out.println("itemid----->"+item.getItemId());
    downloadXML(strurl);


    }
    else if(item.getItemId()==2)
    {
    System.out.println("itemid----->"+item.getItemId());
    }
    return super.onOptionsItemSelected(item);
    } @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    } @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    menu.add(0, 1, 1, R.string.update);
    menu.add(0, 2, 2, R.string.about);
    return true;
    }
    public String downloadXML(String strxml)
    {
    DownLoad download=new DownLoad();
    String s="";
    try {
           s=download.downloadFile(strxml);
           System.out.println("1111111111111111");
           SAXParser(s);
           System.out.println("22222222222");
           showList();
           System.out.println("333333333333");
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return s;

    }
    public String SAXParser(String str)
    {
    SAXParserFactory factory=SAXParserFactory.newInstance();
    try {
    XMLReader reader=factory.newSAXParser().getXMLReader();
    reader.setContentHandler(xmlparse);
    try {
    reader.parse(new InputSource(new StringReader(str)));
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    } catch (SAXException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (ParserConfigurationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    return null;
    }
    public void showList()
    {
    System.out.println("4444444444444");
    System.out.println(xmlparse.list.size());
    for (XmlInfo info  : xmlparse.list) {

    System.out.println(info);
    }
    }}这是DownLoad中的内容
    package com.example.download;import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.MalformedURLException;
    import java.net.URL;public class DownLoad {

    public String downloadFile(String str) throws IOException
    {
    URL url=new URL(str);
    HttpURLConnection urlConn=(HttpURLConnection)url.openConnection();
    BufferedReader br=new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
    String str2=null;
    String str1=null;
    while((str1=br.readLine())!=null)
    {
    //System.out.println(str1);
    str2+=str1;
    }
    //System.out.println("s2="+str2);

    br.close();
    return str2;
    }}这是XmlParse中的内容
    package xmlParse;
    import java.util.ArrayList;
    import java.util.List;import org.xml.sax.Attributes;
    import org.xml.sax.SAXException;
    import org.xml.sax.helpers.DefaultHandler;public class XmlParse extends DefaultHandler { String tagName=null;
    public static List<XmlInfo> list=new ArrayList<XmlInfo>();
    XmlInfo info;

    @Override
    public void characters(char[] ch, int start, int length)
    throws SAXException {
    // TODO Auto-generated method stub
    super.characters(ch, start, length);
    System.out.println("characters");
    String str=new String(ch,start,length);
    if(tagName.equals("mp3_name"))
    {
    info.setMp3_name(str);
    }
    else if(tagName.equals("mp3_size"))
    {
    info.setMp3_size(str);
    }
    else if(tagName.equals("lrc_name"))
    {
    info.setLrc_name(str);
    }
    else if(tagName.equals("lrc_size"))
    {
    info.setLrc_size(str);
    }
    else if(tagName.equals("id"))
    {
    info.setId(str);
    }
    } @Override
    public void endDocument() throws SAXException {
    // TODO Auto-generated method stub
    super.endDocument();
    System.out.println("endDocument");
    } @Override
    public void endElement(String uri, String localName, String qName)
    throws SAXException {
    // TODO Auto-generated method stub
    super.endElement(uri, localName, qName);
    System.out.println("endElement");
    if(qName.equals("resource"))
    {
    info.toString();
    list.add(info);
    }
    tagName="";
    } @Override
    public void startDocument() throws SAXException {
    // TODO Auto-generated method stub
    //super.startDocument();
    System.out.println("startDocument");
    } @Override
    public void startElement(String uri, String localName, String qName,
    Attributes attributes) throws SAXException {
    // TODO Auto-generated method stub
    super.startElement(uri, localName, qName, attributes);
    System.out.println("startElement");
    tagName=localName;
    if(tagName.equals("resource"))
    {
    info=new XmlInfo();
    }

    } }这是XmlInfo中的内容
    package xmlParse;public class XmlInfo {
    public String getId() {
    return id;
    }
    public void setId(String id) {
    this.id = id;
    }
    public String getMp3_name() {
    return mp3_name;
    }
    public void setMp3_name(String mp3_name) {
    this.mp3_name = mp3_name;
    }
    public String getMp3_size() {
    return mp3_size;
    }
    public void setMp3_size(String mp3_size) {
    this.mp3_size = mp3_size;
    }
    public String getLrc_name() {
    return lrc_name;
    }
    public void setLrc_name(String lrc_name) {
    this.lrc_name = lrc_name;
    }
    public String getLrc_size() {
    return lrc_size;
    }
    public void setLrc_size(String lrc_size) {
    this.lrc_size = lrc_size;
    }
    @Override
    public String toString() {
    // TODO Auto-generated method stub
    System.out.println(id);
    return null;
    }
    private String id;
    private String mp3_name;
    private String mp3_size;
    private String lrc_name;
    private String lrc_size;
    }
      

  4.   

    大概就是要读取服务器端的a3.xml文件  然后将其解析  每个<resource></resource>中的内容都放入一个新对象XmlInfo中 然后再存入list集合中 最后将集合中的元素输出
    这个是a3.xml中的内容:
    <?xml version="1.0" encoding="GB2312" standalone="no"?>
    <resources>
    <resource>
    <id>1001</id>
    <mp3_name>zhangjie_mp3</mp3_name>
    <mp3_size>11092822</mp3_size>
    <lrc_name>zhangjie_lrc</lrc_name>
    <lrc_size>1205</lrc_size>
    </resource>
    </resources>
      

  5.   

    http://blog.csdn.net/xiaanming/article/details/8937746SAX解析XML 楼主可以看看
      

  6.   

    谢谢楼上各位的回答  最后发现读取xml文件存入str这个过程出了问题 最后导致读取到的xml文件格式出错