首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Android-使用Dom对XML进行增删改查

Android-使用Dom对XML进行增删改查

1. 概述

    平常我们一般是使用JSON与服务器做数据通信,JSON的话,直接用GSON或者其他库去解析很简单。但是,其他有些服务器会返回XML格式的文件,这时候就需要去读取XML文件了。

    XML的解析有三种方式,在Android中提供了三种解析XML的方式OM(Document Objrect Model),SAX(Simple API XML),以及Android推荐的Pull解析方式,他们也各有弊端,而这里来看看使用DOM的方式。

2. Dom解析

    DOM解析器在解析XML文档时,会把文档中的所有元素,按照其出现的层次关系,解析成一个个Node对象(节点)。再形象点,就是一棵树,多节点的树,称为Dom树。

    Node对象提供了一系列常量来代表结点的类型,当开发人员获得某个Node类型后,就可以把Node节点转换成相应节点对象(Node的子类对象),以便于调用其特有的方法。

    Node对象提供了相应的方法去获得它的父结点或子结点。编程人员通过这些方法就可以读取整个XML文档的内容、或添加、修改、删除XML文档的内容.

3. Dom解析代码示例

    代码如下:

    /**
     * DOM解析
     *  把文档中的所有元素,按照其出现的层次关系,解析成一个个Node对象(节点)。
     *  缺点是消耗大量的内存。
     * @param xmlFilePath   文件
     * @return  Document
     */
    public static Document loadWithDom(String xmlFilePath) {
            try {
                File file = new File(xmlFilePath);
                if (!file.exists()) {
                    throw new RuntimeException("not find file:" + xmlFilePath);
                }
                else {
                    InputStream inputStream = new FileInputStream(file);
                    DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
                    DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
                    Document document = documentBuilder.parse(inputStream);
                    try {
                        inputStream.close();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    return document;
                }
            } catch (ParserConfigurationException | IOException | SAXException e) {
                return null;
            }
        }

    上面的方法是同步的,最终返回的是一个 Document 对象。
返回列表