Android数据存储之DOM解析XML文件(输出部分)

本文介绍了一个Android应用程序如何通过配置权限、创建组件和监听事件来检测存储环境并生成XML文件的过程。关键步骤包括检测外部存储环境、生成XML文件结构、使用DOM API进行文件操作,并确保文件正确保存到指定目录。

此程序涉及到存储卡的操作,此类操作需要在配置文件中添加写权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

 

主Activity组件与监听事件准备:

View Code
public class MainActivity extends Activity {
    
    private EditText idText = null;
    private EditText nameText = null;
    private Button saveXMLBtn = null;
    
    // 操作XML文件的准备
    private File file = null;
    private DocumentBuilderFactory docBuilderFactory = null;
    private DocumentBuilder docBuilder = null;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        idText = (EditText) findViewById(R.id.idText);
        nameText = (EditText) findViewById(R.id.nameText);
        saveXMLBtn = (Button) findViewById(R.id.saveXMLBtn);
        
        saveXMLBtn.setOnClickListener(new SaveXMLBtnListener());
    }
    
    private class SaveXMLBtnListener implements OnClickListener {

        @Override
        public void onClick(View v) {
            // 首先调用检测储存环境的方法
            if(!MainActivity.this.CheckEnvironment()) {
                return;
            } else {
                // 生成XML的方法
                GenerateXMLFile();
            }
        }
        
    }

 

检测储存环境的方法:

View Code
/* 检测储存环境是否配置正常,并设置文件存放路径 */
    private boolean CheckEnvironment() {
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
            file = new File(Environment.getExternalStorageDirectory().toString() + File.separator + "documents"
                    + File.separator + "shuai.xml");
            if (!file.getParentFile().exists()) {
                file.getParentFile().mkdirs();
            }
            return true;
        } else {
            return false;
        }
    }

 

生成XML的方法:

View Code
/* 生成XML的方法 */
    private void GenerateXMLFile() {
        // 实例化文档生成工厂类
        docBuilderFactory = DocumentBuilderFactory.newInstance();
        try {
            // 由工厂实例化文档生成类
            docBuilder = docBuilderFactory.newDocumentBuilder();
            // 实例化一个文档
            Document doc = docBuilder.newDocument();
            
            // 设置文档中的所有节点
            Element moka = doc.createElement("moka");
            Element person = doc.createElement("person");
            Element name = doc.createElement("name");
            Element id = doc.createElement("id");
            
            // 设置所有节点的子节点(文本节点为叶子节点,无子节点)
            doc.appendChild(moka);
            moka.appendChild(person);
            person.appendChild(name);
            person.appendChild(id);
            name.appendChild(doc.createTextNode(MainActivity.this.nameText.getText().toString()));
            id.appendChild(doc.createTextNode(MainActivity.this.idText.getText().toString()));
            
            // 实例化转换器工厂类, 由工厂生成一个转换器类实例,并设置输出参数
            TransformerFactory tf = TransformerFactory.newInstance();
            Transformer transformer = tf.newTransformer();
            transformer.setOutputProperty(OutputKeys.ENCODING, "GBK");
            
            // 转换器类将xml源文件向一个目的路径保存转换后的结果,这里是一个xml文件
            DOMSource source = new DOMSource(doc);
            StreamResult result = new StreamResult(file);
            transformer.transform(source, result);
            
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (TransformerConfigurationException e) {
            e.printStackTrace();
        } catch (TransformerException e) {
            e.printStackTrace();
        }
    }
    
}

 

操作完毕后会在指定目录下生成文件:

转载于:https://www.cnblogs.com/moka/archive/2013/05/08/3067180.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值