加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 教程 > 正文

Android DOM 解析XML办法

发布时间:2021-11-24 18:06:46 所属栏目:教程 来源:互联网
导读:首先自己创建一个xml文件:DomTest.xml ?xml version=1.0 encoding=utf-8? classes group name=一年级 num=10 person name=小明 age=7 chinese 语文80 /chinese english 英语89 /english /person person name=小强 age=8 chinese 语文90 /chinese english 英

首先自己创建一个xml文件:DomTest.xml
 
<?xml version="1.0" encoding="utf-8"?>  
<classes>  
    <group name="一年级" num="10">  
        <person name="小明" age="7">  
            <chinese>  
                语文80  
            </chinese>  
            <english>  
                英语89  
            </english>  
        </person>  
        <person name="小强" age="8">  
            <chinese>  
                语文90  
            </chinese>  
            <english>  
                英语99  
            </english>  
        </person>  
    </group>  
    <group name="二年级" num="20">  
        <person name="小文" age="8">  
            <chinese>  
                语文85  
            </chinese>  
            <english>  
                英语95  
            </english>  
        </person>  
        <person name="小中" age="9">  
            <chinese>  
                语文80  
            </chinese>  
            <english>  
                英语90  
            </english>  
        </person>  
    </group>  
</classes>  
解析出来的结果显示如下图:
 
 
 
下面来分析源代码:
 
/**  
 * 用dom方式 解析xml 文件  
 * @param fileName  
 */  
    private String domXmlParse(String fileName) {  
        String str="";  
        // xml文档创建工厂  
        DocumentBuilderFactory docFactory = DocumentBuilderFactory  
                .newInstance();  
        // xml文档创建实例  
        DocumentBuilder docBuilder;  
        // xml文档  
        Document doc = null;  
        InputStream inStream = null;  
        try {  
            docBuilder = docFactory.newDocumentBuilder();  
            // 从assets文件夹下获取文件 转换成输入流  
            inStream = this.getResources().getAssets().open(fileName);  
            doc = docBuilder.parse(inStream);  
            // 获取xml跟元素  
            Element rootEle = doc.getDocumentElement();  
            // 二级父元素的list列表  
            NodeList groupNode = rootEle.getElementsByTagName("group");  
            // NodeList childNode = rootEle.getElementsByTagName("person");  
            // 遍历Classe下所有的group  
            for (int i = 0; i < groupNode.getLength(); i++) {  
  
                Element groupEle = (Element) groupNode.item(i);  
                String groupName = groupEle.getAttribute("name");  
                String num = groupEle.getAttribute("num");  
                strstr =str+"name ="+groupName+" num = "+num+"n";  
                  
                Log.e("xml", "name = " + groupName + "  num = " + num);  
  
//              NodeList personNode = groupNode.item(i).getChildNodes();  
                NodeList personNode = groupEle.getElementsByTagName("person");  
                // 遍历group下的所有person  
                for (int j = 0; j < personNode.getLength(); j++) {  
                    Element personEle = (Element) personNode.item(j);  
                    String name = personEle.getAttribute("name");  
                    String age = personEle.getAttribute("age");  
                    strstr =str+"personName ="+name+" personAge = "+age+"n";  
                      
                    Log.e("xml", "name = " + name + "   age = " + age);  
  
                    Element chineseEle = (Element) personEle  
                            .getElementsByTagName("chinese").item(0);  
                    Element englistEle = (Element) personEle  
                            .getElementsByTagName("english").item(0);  
                    String chinese = chineseEle.getFirstChild().getNodeValue();  
                    String english = englistEle.getFirstChild().getNodeValue();  
                    strstr =str+"chinese = "+chinese+" english = "+english+"n";  
                      
                    Log.e("xml", "chinese = " + chinese + "   english = "  
                            + english);  
                }  
            }  
  
        } catch (ParserConfigurationException e1) {  
            e1.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } catch (SAXException e) {  
            e.printStackTrace();  
        }  
        return str;  
    }  
为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。 

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读