博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android保存内容到xml中、解析xml
阅读量:4289 次
发布时间:2019-05-27

本文共 10085 字,大约阅读时间需要 33 分钟。

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

blic class MainActivity extends AppCompatActivity {    private EditText name;//设置一个全局变量    private EditText psd;    private Button loginBtn;    private CheckBox check;    private List
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
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
();//集合 //往数组中添加元素 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("
");//拼装头部// buffer.append("
");// 拼接根节点头部// for (Smss sms :smsList){// buffer.append("
");// //添加address节点// buffer.append("
");// buffer.append(sms.getAddress());// buffer.append("
");//// //添加body节点// buffer.append("");// buffer.append(sms.getBody());// buffer.append("");//// //添加date节点// buffer.append("
");// buffer.append(sms.getDate());// buffer.append("");// buffer.append("
");// }//// buffer.append("
");// 拼接根节点结尾//// //吧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
parseXML(InputStream in) throws IOException, XmlPullParserException { XmlPullParser pull = Xml.newPullParser(); XMLParse xp = null; pull.setInput(in, "utf-8");//设置参数 int type = pull.getEventType();//获取事件类型 List
smsList; while (type != XmlPullParser.END_DOCUMENT) { switch (type) { case XmlPullParser.START_TAG://解析开始标签 if ("weather".equals(pull.getName())) {//这里是更根节点,getname是获取节点名称 smsList = new ArrayList
();//集合 } 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
readInfo(Context context) throws FileNotFoundException {Map
maps=new HashMap
();//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 + '\'' +                '}';    }}

转载地址:http://ytmgi.baihongyu.com/

你可能感兴趣的文章
git将一个分支完全覆盖另外一个分支如:dev分支代码完全覆盖某一个开发分支
查看>>
elasticsearch7.3版本环境搭建(二)可视化管理后台kibana的安装和配置
查看>>
elasticsearch7.3版本环境搭建(三)可视化管理后台kibana的汉化(设置中文界面)
查看>>
记录一次DDos攻击实战
查看>>
分享一首小诗--《致程序员》
查看>>
为什么百度只抓取了首页而不抓取我的网站的内页的原因分析
查看>>
年薪170万的阿里P8级员工征婚有感--话说阿里真有钱,这员工要求的条件真多
查看>>
又是一年桂花飘香时,祝我们伟大的祖国70年华诞更加繁荣昌盛,祝大家国庆节快乐
查看>>
谷歌浏览器chrome即将在2020年底停止支持flash,我们程序员该怎么办
查看>>
如何将数据采集到 Elasticsearch 服务
查看>>
面试官:mysql表设计要注意什么?
查看>>
一些精致小众网站收集录
查看>>
计算机科学探秘之linux发展史
查看>>
程序员每天早上早来10分钟的好处
查看>>
互联网30年,泡沫如梦,一个个泡沫和风口过后,会是什么样的结局
查看>>
升级centos 6.8 服务器的gcc
查看>>
网络案例分析之999皮炎平出鹤顶红色号的口红
查看>>
API网关在微服务架构中的应用,这一篇就够了
查看>>
微服务部署:蓝绿部署、滚动部署、灰度发布、金丝雀发布
查看>>
架构成长之路:Spring Cloud微服务如何实现熔断降级?
查看>>