先看代码:
xmlMain.java
package com.android.xml;import java.io.StringReader;import javax.xml.parsers.SAXParserFactory;import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;import com.android.tool.MyContentHandler;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class xmlMain extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        Button read_btn =(Button)findViewById(R.id.read);
        read_btn.setOnClickListener(new read_btn_lin());
    }
    
    private class read_btn_lin implements OnClickListener{ @Override
public void onClick(View v) {
// TODO Auto-generated method stub StringReader sr=new StringReader("./assets/Workers.xml");
InputSource is=new InputSource(sr);
try{
SAXParserFactory factory=SAXParserFactory.newInstance();
XMLReader reader=factory.newSAXParser().getXMLReader();
reader.setContentHandler(new MyContentHandler());
reader.parse(is);
}catch(Exception e){
e.printStackTrace();
}

}
    
    }
}MyContentHandler.javapackage com.android.tool;import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;public class MyContentHandler extends DefaultHandler { private String id, name, sex, tag; @Override
public void characters(char[] ch, int start, int length)
throws SAXException {
// TODO Auto-generated method stub
super.characters(ch, start, length);
} @Override
public void endDocument() throws SAXException {
// TODO Auto-generated method stub
super.endDocument();
System.out.println("---End---");
} @Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
// TODO Auto-generated method stub
super.endElement(uri, localName, qName);
} @Override
public void startDocument() throws SAXException {
// TODO Auto-generated method stub
//super.startDocument();
System.out.println("---Begin---");
} @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);
tag = localName;
if (localName.equals("worker")) {
for (int i = 0; i < attributes.getLength(); i++) {
System.out.println(attributes.getLocalName(i)
+ attributes.getValue(i));
}
}
}}
错误(但LOG里输出的是W,,是警告信息:
08-31 17:55:03.594: WARN/System.err(345): org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 1: not well-formed (invalid token)
System.out输出也有有startDocument()这里的"---begin---"就没了。是什么原因

解决方案 »

  1.   

    用自带的pull试试
      

  2.   

    在Android平台上可以使用Simple API for XML(SAX) 、 Document Object Model(DOM)和Android附带的pull解析器解析XML文件。 
    pull是android自带的一种xml解析器。pull解析xml示例
    http://tdq222.javaeye.com/blog/702114
      

  3.   

    无法解析.有可能是编码的问题.你的XML文件不行.
      

  4.   

    我用3楼给的pull例子中的xml
    <?xml version="1.0" encoding="UTF-8"?>   
    <persons>   
        <person id="23">   
            <name>李明</name>   
            <age>30</age>   
        </person>   
        <person id="20">   
            <name>李向梅</name>   
            <age>25</age>   
        </person>   
    </persons>  也是不行,,只是输出begin那句。
    还有这个警告:WARN/System.err(345): org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 1: not well-formed (invalid token)
    怎么回事????
      

  5.   

    你在工程中建立个空的xml文件,然后把你的内容cpy到上面,估计是你xml文件的编码格式不对。
      

  6.   

    我新建了两个文:都是右建new-file-然后起个名XX.xml
    还有
    new-other-xml-xml.都不行。
    还有一个android工程里有一个android XML File .我不太会用,试着建了一个,然后删除原来的,把我的copy上去。。
    这三个建的xml。。运行,都是同样错误。
      

  7.   


    什么 care   ?????????
      

  8.   

    在解析中打log吧,在解析的一开始就挂掉了。StringReader sr=new StringReader("./assets/Workers.xml");貌似这句不是打开具体的文件,而是创建了一个叫做./assets/Workers.xml的字符串。尝试用inputstream来打开文件吧。
      

  9.   

    我用FileinputStream,inputstreamreader.等打开"./assets/Workers.xml“
    都是java.io.FileNotFoundException但写在java里都正常。
      

  10.   

    你建的都是GBK文件,Java要转码,不然直接建UTF-8文件
      

  11.   

    手机资源有限,不想转码。win记事本中“另存为”中有utf8格式,
    可是放到程序里还是不行啊要怎么建utf8啊。
      

  12.   

    android不能访问本地磁盘的内容,应该放到sdcard中进行访问