xml读取.sax解析方式 使用于Android 和java中 ,代码是java的, 在Android中只需要 区别监听类中的参数(localName,qName),相反的,java中使用qname 为节点的名称;

public class mainTest {

    public static void main(String[] args) {
        List<Person> persons = new ArrayList<Person>();
        try {

        //读取网络中的xml
/*URL url = new URL("http://127.0.0.1:8080/JavaInputSteam/db.xml"); HttpURLConnection connection = (HttpURLConnection) url .openConnection(); InputStream input = connection.getInputStream();*/ //读取本地文件夹 地址 File file=new File("E:\\MyEclipse 10\\xiazai\\xml\\db.xml"); InputStream input=new FileInputStream(file); //创建sax工厂 SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser parser = factory.newSAXParser(); XMLReader reader = parser.getXMLReader(); //获取读 reader.setContentHandler(new SAXPrinter(persons)); //设置监听类 reader.parse(new InputSource(input)); //设置输入流 } catch (Exception e) { e.printStackTrace(); }

//编写监听类  继承 DefaultHandler
public class SAXPrinter extends DefaultHandler {

    private String startNode;  //开始节点
    private Person person;    //人物 对象
    private List<Person> persons;  //人物集合
    
    //构造
    public SAXPrinter(List<Person> persons) {
        super();
        this.persons = persons;
    }

    //开始读取判断
    @Override
    public void startElement(String uri, String localName, String qName,
            Attributes attributes) throws SAXException {
        startNode = qName;
        if ("person".equals(startNode)) {
            person = new Person();
        }
    }

    //结束判断
    @Override
    public void endElement(String uri, String localName, String qName)
            throws SAXException {
        startNode = ""; // 赋值
        if ("person".equals(qName)) {
            persons.add(person);
        }

    }

//取值 @Override
public void characters(char[] ch, int start, int length) throws SAXException { String str = new String(ch, start, length); //转换为字符串 if ("name".equals(startNode)) { person.setName(str); //赋值 } if ("age".equals(startNode)) { person.setAge(str); } if ("address".equals(startNode)) { person.setAddress(str); } } }

 



 

posted on 2016-01-29 21:26  AndroidStart  阅读(175)  评论(0)    收藏  举报

导航