• XML文件解析之DOM方法


           解析一个XML文件在实际项目中经常要用到,常用的有两种方式:DOM和SAX方式。它们的之间有很大的区别:DOM是把XML文件以一棵树的形式装载到内存里,然后再对它进行遍历,进而获得XML文件中存储的信息。而SAX解析方式是一种流机制的解析方式,它是读一行XML文件解析一行。

    例如,XML文件如下:

    <?xml version="1.0" encoding="utf-8"?>
    <Students>
        <student id="1">
            <name>杨振宇</name>    
            <sno>2008011123</sno>
            <sex></sex>
            <phone>18618405551</phone>
        </student>
        <student id="2">
            <name>张瑞</name>    
            <sno>2008011122</sno>
            <sex></sex>
            <phone>15120058124</phone>
        </student>
        <student id="3">
            <name>陈明</name>    
            <sno>2008011121</sno>
            <sex></sex>
            <phone>15801281851</phone>
        </student>
        <student id="4">
            <name>苏玉杰</name>    
            <sno>2008011120</sno>
            <sex></sex>
            <phone>18618405551</phone>
        </student>
        <student id="5">
            <name>高阳</name>    
            <sno>2008011145</sno>
            <sex></sex>
            <phone>18618405590</phone>
        </student>
    </Students>
     
    可以用一下的方式进行解析:
     
    public static void parse(File file) throws Exception {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            Document doc = builder.parse(file);
            Element root = doc.getDocumentElement();
            NodeList childList = root.getChildNodes();
            for (int i = 0; i < childList.getLength(); i++) {
                Node child = childList.item(i);
                if (child instanceof Element) {
                    Element element = (Element) child;
                    NodeList childInfo = element.getChildNodes();
                    for (int j = 0; j < childInfo.getLength(); j++) {
                        Node node = childInfo.item(j);
                        if (node instanceof Element) {
                            Element e = (Element) node;
                            Log.v("tag", "" + e.getTagName());
                            Text textNode = (Text) e.getFirstChild();
                            String text = textNode.getData().trim();
                            if (e.getTagName().equals("name"))
                                Log.v("tag", "" + text);
                            else if (e.getTagName().equals("sno"))
                                Log.v("tag", "" + text);
                            else if (e.getTagName().equals("sex"))
                                Log.v("tag", "" + text);
                            else if (e.getTagName().equals("phone"))
                                Log.v("tag", "" + text);
                        }
                    }
     
                }
            }
        }
     
    这样就可以把XML文件的有关信息给获取出来。
  • 相关阅读:
    详解GaussDB(for MySQL)服务:复制策略与可用性分析
    华为云的研究成果又双叒叕被MICCAI收录了!
    充分释放数据价值:安全、可信6到飞起
    未来云原生世界的“领头羊”:容器批量计算项目Volcano 1.0版本发布
    一文带你掌握OBS的两种常见的鉴权方式
    数据库实践丨MySQL多表join分析
    技术贴丨教你使用华为云鲲鹏服务器部署Discuz!论坛
    python Scrapy 从零开始学习笔记(二)
    python Scrapy 从零开始学习笔记(一)
    从零开始学Electron笔记(七)
  • 原文地址:https://www.cnblogs.com/yangzhenyu/p/2214342.html
Copyright © 2020-2023  润新知