使用Xml文件格式存储数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/linzhihan7410/article/details/53366910

xml数据格式:
这里写图片描述

存储格式是以节点为主,一个节点衍生出另外的子节点(比如name和phone节点属于lianxiren,lianxiren节点属于xinxi)

存储流程(生成xml数据格式):
1.通过DocumentBuilderFactory获得DocumentBuilder
2.创建Document接口进行DOM转换
3.建立数据节点
4.把数据给相应节点
5.设置节点关系

代码:

private EditText nameEdit;
    private EditText phoneEdit;
    private Button saveBtn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_xml_file_save);
        saveBtn = (Button) findViewById(R.id.btnSaveIsXml);
        if(!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
            Toast.makeText(this,"SD Card Can't Find",Toast.LENGTH_SHORT).show();
            saveBtn.setEnabled(false);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_xml_file_save, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    public void savexmlOnClick(View v) throws ParserConfigurationException, TransformerException {
        //通过DocumentBuilderFactory获得DocumentBuilder
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = null;
        builder = factory.newDocumentBuilder();
        //创建Document接口进行DOM转换
        Document document = builder.newDocument();
        //建立数据节点
        Element jiedian1 = document.createElement("xinxi");
        Element jiedian2 = document.createElement("dianhuaben");
        Element jiedian31 = document.createElement("name");
        Element jiedian32 = document.createElement("phone");
        //把数据给相应节点(这里的布局通过两个EditText控件获取用户的数据)
        nameEdit = (EditText) findViewById(R.id.nameEdit);
        phoneEdit = (EditText) findViewById(R.id.phoneEdit);

        jiedian31.appendChild(document.createTextNode(nameEdit.getText().toString()));
        jiedian32.appendChild(document.createTextNode(phoneEdit.getText().toString()));
        //设置节点关系
        jiedian2.appendChild(jiedian31);
        jiedian2.appendChild(jiedian32);
        jiedian1.appendChild(jiedian2);
        document.appendChild(jiedian1);   
        //剩下的为保存为xml格式的代码

———————————————————————————————–分割线~~~—–

保存xml数据格式流程(保存为xml数据格式):
1.把xml数据格式放进DOMSource里
2.用StreamResult指定保存地址
3.通过TransformerFactory得到Transformer
4.通过setOutputProperty方法设置编码格式
5.通过transform方法输出保存

代码:

//把xml数据格式放进DOMSource里
        DOMSource domSource = new DOMSource(document);
        //用StreamResult指定保存地址(这里是放到了SD卡里面,所以在OnCreate方法里有做SD卡的判断)
        File file = new File(Environment.getExternalStorageDirectory()+"/dianhuaben.xml");
        StreamResult dizhi = new StreamResult(file);
        //通过TransformerFactory得到Transformer
        TransformerFactory factory1 = TransformerFactory.newInstance();
        Transformer transformer = null;
        transformer = factory1.newTransformer();
        //通过setOutputProperty方法设置编码格式
        transformer.setOutputProperty(OutputKeys.ENCODING,"utf-8");
        //通过transform方法输出保存(参数为得到的数据,以及得到的地址)
        transformer.transform(domSource, dizhi);
        //做一个保存成功的提醒
        Toast.makeText(getApplicationContext(),"Save Success!!!",Toast.LENGTH_SHORT).show();

猜你喜欢

转载自blog.csdn.net/linzhihan7410/article/details/53366910
今日推荐