XML的创建和解析(4)-创新互联

一丶XML的创建

公司专注于为企业提供成都网站设计、做网站、微信公众号开发、成都商城网站开发,小程序开发,软件定制制作等一站式互联网企业服务。凭借多年丰富的经验,我们会仔细了解各客户的需求而做出多方面的分析、设计、整合,为客户设计出具风格及创意性的商业解决方案,创新互联更提供一系列网站制作和网站推广的服务。
  1. 手动创建(保存到sd卡)

    String status = Environment.getExternalStorageState();
            if (status.equals(Environment.MEDIA_MOUNTED)) {
                // 获取sd卡的路径
                String path = Environment.getExternalStorageDirectory()
                        + "/sms.xml";
                // 创建file对象
                File file = new File(path);
                // 创建输出流对象
                try {
                    FileOutputStream fos = new FileOutputStream(file);
                    StringBuilder sb = new StringBuilder();
                    sb.append("");
                    sb.append("");
                    for (int i = 0; i < list.size(); i++) {
                        Sms sms = list.get(i);
                        sb.append("");
                        sb.append("

    " + sms.getAddress() + "
    ");
                        sb.append("" + sms.getBody() + "");
                        sb.append("" + sms.getDate() + "");
                        sb.append("");
                    }
                    sb.append("");
                    fos.write(sb.toString().getBytes());
                    fos.close();
                    Toast.makeText(this, "创建xml文件成功", 0).show();
                } catch (Exception e) {
                    e.printStackTrace();
                    Toast.makeText(this, "创建xml文件失败", 0).show();
                }
            }else{
                Toast.makeText(this, "sd卡不可用", 0).show();
            }

  2. 调用系统的api创建

    String status = Environment.getExternalStorageState();
            if (status.equals(Environment.MEDIA_MOUNTED)) {
                // 获取sd卡的路径
                String path = Environment.getExternalStorageDirectory()
                        + "/sms.xml";
                //创建xml文件的生成器
                try {
                    XmlSerializer serialiaer = Xml.newSerializer() ;
                    FileOutputStream os = new FileOutputStream(path) ;
                    serialiaer.setOutput(os, "UTF-8") ;
                    serialiaer.startDocument("UTF-8", true) ;
                    serialiaer.startTag(null, "Smses") ;
                     for (int i = 0; i < list.size(); i++) {
                        serialiaer.startTag(null, "sms") ;

                        serialiaer.startTag(null, "address") ;
                        serialiaer.text(list.get(i).getAddress()) ;
                        serialiaer.endTag(null, "address") ;

                        serialiaer.startTag(null, "body") ;
                        serialiaer.text(list.get(i).getBody()) ;
                        serialiaer.endTag(null, "body") ;

                        serialiaer.startTag(null, "date") ;
                        serialiaer.text(list.get(i).getDate()) ;
                        serialiaer.endTag(null, "date") ;

                        serialiaer.endTag(null, "sms") ;
                    }
                     serialiaer.endTag(null, "Smses") ;
                    serialiaer.endDocument() ;
                    Toast.makeText(this,"生成xml文件成功",0).show() ;
                } catch (Exception e) {
                    e.printStackTrace();
                    Toast.makeText(this,"生成xml文件失败",0).show() ;
                }
            }else{
                Toast.makeText(this,"sd卡不可用,请检查sd的状态",0).show() ;
            }

二丶XML的解析

// 加载文件
        try {
//            FileInputStream fis = new FileInputStream(
//                    "/data/data/com.xunfang.pull/weather.xml");
            InputStream fis = MainActivity.class.getClassLoader().getResourceAsStream("weather.xml") ;
            // 生成xml的pull解析器
            XmlPullParser pull = Xml.newPullParser();
            pull.setInput(fis, "UTF-8");
            int type = pull.getEventType();
            Weather weather = null;
            while (type != XmlPullParser.END_DOCUMENT) {
                // 判断
                switch (type) {
                    case XmlPullParser.START_TAG:
                        // 拿到标签的名字
                        String tagName = pull.getName();
                        if ("channel".equals(tagName)) {
                            weather = new Weather();
                            weather.setId(pull.getAttributeValue(0));
                        }
                        if ("city".equals(tagName)) {
                            weather.setName(pull.nextText());
                        }
                        if ("temp".equals(tagName)) {
                            weather.setTemp(pull.nextText());
                        }
                        if ("wind".equals(tagName)) {
                            weather.setWind(pull.nextText());
                        }
                        break;
                    case XmlPullParser.END_TAG:
                        String name = pull.getName();
                        if ("channel".equals(name)) {
                            // 将对象放到集合中
                            list.add(weather);
                        }
                        break;
                }
                // 获取下一个事件对象
                type = pull.next();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    //打印出来
        for (int i = 0; i < list.size(); i++) {
            Weather w = list.get(i);
            System.out.println("城市名称:" + w.getName());
            System.out.println("城市id:" + w.getId());
            System.out.println("城市风力:" + w.getWind());
            System.out.println("城市气温:" + w.getTemp());
            System.out.println("---------------------------------");
        }

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


分享标题:XML的创建和解析(4)-创新互联
文章地址:http://myzitong.com/article/djjpii.html