zoukankan      html  css  js  c++  java
  • 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文件的有关信息给获取出来。
  • 相关阅读:
    供安全工程师实用的SOC模型
    Windows-NTFS-ADS在渗透测试中的利用
    域安全的基础知识上
    Linux下利用动态链接劫持库函数并注入代码
    多线程sshd爆破程序代码
    Windows NTLM Hash和Hash传递、Key传递攻击
    替换linux系统文件etc下passwd文件的字段获取真正的root权限
    攻防对抗中常用的windows命令(渗透测试和应急响应)
    获取权限后权限维持的方法
    RocketMQ启动mqbroker.cmd没反应
  • 原文地址:https://www.cnblogs.com/yangzhenyu/p/2214342.html
Copyright © 2011-2022 走看看