android保存内容到xml中、解析xml

--------Mainactivity、---------

blic class MainActivity extends AppCompatActivity {
    private EditText name;//设置一个全局变量
    private EditText psd;
    private Button loginBtn;
    private CheckBox check;
    private List<Smss> smsList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找到
        name = (EditText) findViewById(R.id.name_text);
        psd = (EditText) findViewById(R.id.psd_text);
        loginBtn = (Button) findViewById(R.id.login_button);//ctrl+alt+f然后选择private,就变成了公共的变量
        check = (CheckBox) findViewById(R.id.check);

        //用sharedPrefernecces取存储的值
        SharedPreferences sharedPreferences = getSharedPreferences("config", MODE_PRIVATE);
        String name = sharedPreferences.getString("nam", "");//第二个参数是默认值
        String pwd = sharedPreferences.getString("pwd", "");//第二个参数是默认值

//TODO 这个标记是凸显出
//        Map<String,String> maps= null;
//        try {
//            maps = UserInoUtils.readInfo();
//        } catch (FileNotFoundException e) {
//
//        }
//        if(maps!=null){
//          String nam=maps.get("nam");
//          String pwd=maps.get("pwd");
//          name.setText(nam);
//          psd.setText(pwd);
//      }


        //******************************************
        smsList = new ArrayList<Smss>();//集合
        //往数组中添加元素
        for (int i = 0; i < 100; i++) {
            Smss smss = new Smss();
            smss.setAddress("ad" + i);
            smss.setBody("bo" + i);
            smss.setDate("da" + i);
//吧smss对象夹到集合中
            smsList.add(smss);

        }


        //********************************************
        //放在assets文件夹下的资源不会被proguard(代码混淆)压缩;
// 通过上下问获取资产数据
        InputStream in=getAssets().open("weather.xml");//weather.xml是assets中的文件

    }

    //登陆的按钮点击事件
    public void login(View v) {
        String uName = name.getText().toString().trim();//获取文本内容,trim是去掉两边空格
        String pwd = psd.getText().toString().trim();
        if (TextUtils.isEmpty(uName) || TextUtils.isEmpty(pwd)) {
            Toast.makeText(MainActivity.this, "用户名或密码错误", 1).show();//弹出提示

        } else {
            if (check.isChecked()) {
                //判断sd卡的状态是否可用;
                if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
//        Boolean result=UserInoUtils.saveInfo(MainActivity.this,uName,pwd);//保存用户名密码到本地文件中

                    //使用sharedPreference来保存密码
                    SharedPreferences sharedPreferences = getSharedPreferences("config", MODE_PRIVATE);//context直接调用sharedpreference方法得到一个实例,会生成prefer——shared文件夹下生成一个config.XML的文件
                    SharedPreferences.Editor ed = sharedPreferences.edit();//获取编辑器
                    ed.putString("nam", uName);//吧名字放入编辑器
                    ed.putString("pwd", pwd);
                    ed.commit();//提交编辑器

                }

            }

        }

//
***********************************************************************
自定义XML文件
//    StringBuffer buffer=new StringBuffer();//创建sb对象
//    buffer.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");//拼装头部
//    buffer.append("<smss>");// 拼接根节点头部
//    for (Smss sms :smsList){
//        buffer.append("<sms>");
//        //添加address节点
//        buffer.append("<address>");
//        buffer.append(sms.getAddress());
//        buffer.append("</address>");
//
//        //添加body节点
//        buffer.append("<body>");
//        buffer.append(sms.getBody());
//        buffer.append("</body>");
//
//        //添加date节点
//        buffer.append("<date>");
//        buffer.append(sms.getDate());
//        buffer.append("</dat>");
//        buffer.append("</sms>");
//    }
//
//    buffer.append("<smss>");// 拼接根节点结尾
//
//    //吧xml写到sd卡中
//    File file=new File(Environment.getExternalStorageDirectory().getPath(),"autoDe.xml");
//    FileOutputStream fos=new FileOutputStream(file);
//    fos.write(buffer.toString().getBytes());//Stringbuffer先要转成string类型的
//    fos.close();


        //**********************************************************
        //用系统提供的XML类创建xnl文件
        XmlSerializer serilizer = Xml.newSerializer();//通过XML的工具类获取对象
        //设置序列化器参数
        File file = new File(Environment.getExternalStorageDirectory().getPath(), "xuliehua.xml");
        FileOutputStream outS = new FileOutputStream(file);
        serilizer.setOutput(outS, "utf-8");
        serilizer.startDocument("utf-8", true);//文档开头,true表示独立,不需要其他文件依赖
        serilizer.startTag(null, "smss");//设置节点,第一个是参数是命名空间,第二个是节点名

        for (Smss sms : smsList) {
            serilizer.startTag(null, "sms");
            serilizer.startTag(null,"address");
            serilizer.text(sms.getAddress());
            serilizer.endTag(null,"address");

            serilizer.endTag(null, sms);
        }
        serilizer.endTag(null, "smss");

        serilizer.endDocument();//文档结尾
        outS.close();
    }


}

-----------------ParseXML---------------

public class ParseXML extends Object {

    public static List<XMLParse> parseXML(InputStream in) throws IOException, XmlPullParserException {
        XmlPullParser pull = Xml.newPullParser();
        XMLParse xp = null;
        pull.setInput(in, "utf-8");//设置参数
        int type = pull.getEventType();//获取事件类型
        List<Smss> smsList;
        while (type != XmlPullParser.END_DOCUMENT) {
            switch (type) {
                case XmlPullParser.START_TAG://解析开始标签
                    if ("weather".equals(pull.getName())) {//这里是更根节点,getname是获取节点名称
                        smsList = new ArrayList<Smss>();//集合
                    } else if ("chanel".equals(pull.getName())) {//根节点下第一级节点
                        xp = new XMLParse();//javabean对象
                        String id = pull.getAttributeValue(0);//chanel中有一个id属性
                        xp.setId(id);

                    } else if ("city".equals(pull.getName())) {
                        String city = pull.nextText();//取标签中的数据
                        xp.setCity(city);
                    }
                    break;
                case XmlPullParser.END_TAG:// 解析结束标签
if("chanel".equals(pull.getName())){

smsList.add(xp);  //吧javaBean对象存到集合中
}
                    break;

            }


            type = pull.next();//不停的向下解析
        }

        return null;
    }
}

----------------Smss--------------

public class Smss extends Object {
private String address;
private  String body;
private String  date;
// 自动生成 set,get方法;方式一:Code-->Generate 方式二:通过快捷键Alt+Insert 这时,在弹出的对话框中就可以选择你所需要的对应的东东了。
    public void setAddress(String address) {
        this.address = address;
    }

    public void setBody(String body) {
        this.body = body;
    }

    public void setDate(String date) {
        this.date = date;
    }

    public String getAddress() {
        return address;
    }

    public String getBody() {
        return body;
    }

    public String getDate() {
        return date;
    }
}

----------UserInfoUtil----------

public class UserInoUtils {

//保存密码,吧数据写到文本中
    public static boolean saveInfo(Context context, String uname, String pwd) throws FileNotFoundException {

            String result = uname + "##" + pwd;
            File file = new File("/data/data/com.example.lambo.secondad/info.txt");//路径写死。不建议
//  //外部存储sd卡的路径:/mnt/sdcard/可以通过environment获取sdcard的路径
//        String sdPath= Environment.getExternalStorageDirectory().getPath();//获取sd卡的路径,读取外部存储,需要设置权限;
        File sdFile=Environment.getExternalStorageDirectory();//获取SD卡的文件;
     Long sdt= sdFile.getTotalSpace();//获取sd卡的总大小;是以字节数返回;
//       Long sdU= sdFile.getUsableSpace();//获取sd卡可使用大小
//        //吧字节转换成MB
//        String formatTotal= Format.format(this,sdt);

//      String path=context.getFilesDir().getPath();//这句系统默认会创建一个File路径;
//
//        File file = new File(path,"info.txt");//在File文件夹下回创建一个info.txt的文件
//        FileOutputStream fos =  new FileOutputStream(file);

        //通过上下文获取FileOutputStream,一句话相当于上面四句话
        FileOutputStream fos=context.openFileOutput("info.txt",0);//表示私有,或者用MODEL_PRIVATE、可追加MODEL_APPEND
        //linuxx 下权限的标记是10位,第一位是文件类型(d标识文件夹,-表示文件),2-4为标识当前用户的权限,可以用三个二进制位得到的10进制数字表示(2位是r可读,-不可读,3位w可写,-不可写,4位x可执行,-不可执行);5-7位是用户组的其他成员的权限,8-10位是其他用户权限
        //cmd---->adb shell--->出现#,chmod 777 innfo.txt
        try {
            fos.write(result.getBytes());//吧数据写入到文件中
        } catch (IOException e) {

        }
        try {
            fos.close();
        } catch (IOException e) {

        }
        return true;


    }

    public static Map<String,String> readInfo(Context context) throws FileNotFoundException {
Map<String,String> maps=new HashMap<String,String>();
//File file=new File("/data/data/com.example.lambo.secondad/info.txt");
//        FileInputStream input=new FileInputStream(file);
        //通过context直接获取FileInputStream,这一句话详相当于上面的两句话
        FileInputStream input=context.openFileInput("info.txt");
        BufferedReader buf=new BufferedReader(new InputStreamReader(input));
        String content= null;//读取一行数据
        try {
            content = buf.readLine();
        } catch (IOException e) {
            e.printStackTrace();
        }

        //切割字符串成数组
        String[] splits=content.split("##");
        String name=splits[0];
        String pwd=splits[1];
        //吧数组中的元素放到map中;
        maps.put("nam",name);
        maps.put("pwd",pwd);
        try {
            input.close();//关闭流
        } catch (IOException e) {

        }
        return maps;
    }
}

-------XMLParse-------

public class XMLParse extends Object {
    private String id;
    private String temp;
    private  String pm;

    public void setCity(String city) {
        this.city = city;
    }

    public String getCity() {

        return city;
    }

    private String city;

    public void setId(String id) {
        this.id = id;
    }

    public void setTemp(String temp) {
        this.temp = temp;
    }

    public void setPm(String pm) {
        this.pm = pm;
    }

    public String getId() {

        return id;
    }

    public String getTemp() {
        return temp;
    }

    public String getPm() {
        return pm;
    }

    @Override
    public String toString() {
        return "XMLParse{" +
                "id='" + id + '\'' +
                ", temp='" + temp + '\'' +
                ", pm='" + pm + '\'' +
                ", city='" + city + '\'' +
                '}';
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值