zoukankan      html  css  js  c++  java
  • 第四十六篇--解析和保存xml文件

    新建assets资源文件夹,右键app --> new --> Folder --> Assets Folder,将info.xml放入此文件夹下面。

    info.xml

    <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
    <info>
        <student id="10011">
            <name>lisi</name>
            <age>19</age>
        </student>
    </info>
    View Code

    解析:

    MainActivity.java

    package com.example.aimee.getfileinfo;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.util.Xml;
    import android.view.View;
    
    import org.xmlpull.v1.XmlPullParser;
    
    import java.io.InputStream;
    
    public class MainActivity extends AppCompatActivity {
    
        private static final String TAG = "MainActivity";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        public void click(View view) {
            try {
                //1.找到此资产文件并打开
                InputStream is = this.getAssets().open("info.xml");//ctrl+shift+方向键可以上下移动
                //2.得到xml文件解析器
                XmlPullParser parser = Xml.newPullParser();
                //3.设置输入流和编码
                parser.setInput(is,"utf-8");
                //4.解析xml文件,获取当前的事件类型
                int type = parser.getEventType();
                while (type != XmlPullParser.END_DOCUMENT){
                    Log.i(TAG,parser.getEventType() + "----" + parser.getName() + "----" + parser.getText());
                    type = parser.next();
                }
    
                is.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    View Code

     保存:

    MainActivity.java

    package com.example.aimee.getfileinfo;
    
    import android.Manifest;
    import android.os.Bundle;
    import android.os.Environment;
    import android.text.TextUtils;
    import android.util.Xml;
    import android.view.View;
    import android.widget.EditText;
    import android.widget.Toast;
    
    import org.xmlpull.v1.XmlSerializer;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class MainActivity extends com.example.aimee.getfileinfo.BaseActivity {
    
        private EditText mEtAge;
        private EditText mEtName;
        private EditText mEtId;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            //1.找到所有需要用到的文件
            mEtName = findViewById(R.id.et_name);
            mEtAge = (EditText) findViewById(R.id.et_age);
            mEtId = (EditText) findViewById(R.id.et_id);
    
            //2.将控件内容写到xml文件中
        }
    
    
        /**
         * 将控件内容写到xml文件中
         * @param view
         */
        public void save(View view) {
            //3.根据控件读取用户输入的文本放入到字符串变量中
            final String name = mEtName.getText().toString().trim();
            final String age = mEtAge.getText().toString().trim();
            final String id = mEtId.getText().toString().trim();
    
            //4.判断是否有空的内容
            if (TextUtils.isEmpty(name) || TextUtils.isEmpty(age)){
                Toast.makeText(this,"信息不能为空",Toast.LENGTH_SHORT).show();
                return;
            }else {
                //5.将字符串写入到xml文件中
                performCodeWithPermission("保存学生信息到sd卡", new PermissionCallback() {
                    @Override
                    public void hasPermission() {
                        //1.创建一个xml文件的序列号器
                        XmlSerializer serializer = Xml.newSerializer();
                        //2.设置文件的输出和编码方式
                        FileOutputStream fos = null;
                        try {
                            fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory(), "info.xml"));
                            serializer.setOutput(fos,"utf-8");
                            //3.写入xml文件的头
                            serializer.startDocument("utf-8",true);
                            //4.写info节点
                            serializer.startTag(null,"info");
                            //5.写student节点
                            serializer.startTag(null,"student");
                            //6.写属性
                            serializer.attribute(null,"id",id);
                            //7.写name
                            serializer.startTag(null,"name");
                            serializer.text(name);
                            serializer.endTag(null,"name");
                            //8.写age
                            serializer.startTag(null,"age");
                            serializer.text(age);
                            serializer.endTag(null,"age");
    
                            serializer.endTag(null,"student");
                            serializer.endTag(null,"info");
                            serializer.endDocument();;
                        } catch (Exception e) {
                            e.printStackTrace();
                        }finally {
                            try {
                                if (fos !=null)
                                    fos.close();
                                Toast.makeText(MainActivity.this,"成功保存文件",Toast.LENGTH_SHORT).show();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                    }
    
                    @Override
                    public void noPermission() {
                        Toast.makeText(MainActivity.this,"没有运行时权限",Toast.LENGTH_SHORT).show();
                    }
                }, Manifest.permission.WRITE_EXTERNAL_STORAGE);
            }
        }
    }
    View Code

    activity_main.xml

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    
    
        <EditText
            android:id="@+id/et_name"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginTop="60dp"
            android:layout_marginEnd="8dp"
            android:ems="10"
            android:hint="请输入学生的姓名"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    
        <EditText
            android:id="@+id/et_age"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginTop="60dp"
            android:layout_marginEnd="8dp"
            android:ems="10"
            android:hint="请输入学生的年龄"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/et_name" />
    
        <EditText
            android:id="@+id/et_id"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="8dp"
            android:layout_marginTop="60dp"
            android:layout_marginEnd="8dp"
            android:ems="10"
            android:hint="请输入学生的学号"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/et_age" />
    
        <Button
            android:id="@+id/button"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginStart="9dp"
            android:layout_marginTop="60dp"
            android:layout_marginEnd="8dp"
            android:text="保存"
            android:onClick="save"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/et_id" />
    </android.support.constraint.ConstraintLayout>
    View Code

    注意:不要忘了在清单文件中添加权限。

  • 相关阅读:
    团队介绍及项目介绍
    2017年秋季个人阅读计划
    软件需求分析阅读笔记
    Cookie学习总结
    暑期兴趣班第二天学习总结
    暑期兴趣班第一天学习总结
    个人总结
    第十六周工作总结
    第十五周工作总结
    第十四周工作总结
  • 原文地址:https://www.cnblogs.com/smart-zihan/p/10711461.html
Copyright © 2011-2022 走看看