• DOM解析xml学习笔记


    一、dom解析xml的优缺点

     由于DOM的解析方式是将整个xml文件加载到内存中,转化为DOM树,因此程序可以访问DOM树的任何数据。  

     优点:灵活性强,速度快。

     缺点:如果xml文件比较大比较复杂会占用较大的内存资源。

    二、列子:

      xml文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <students>
    <student>
    <name id="001" xx="haha">张三</name>
    <sex>男</sex>
    <age>20</age>
    </student>
    <student>
    <name id="002" xx="哈哈">李四</name>
    <sex>女</sex>
    <age>18</age>
    </student>
    </students>

      解析:

    package com.java1234.xml;

    import java.io.IOException;

    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;

    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NamedNodeMap;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;

    public class DOM01 {

    public static void getNodeAttr(Node node){
    NamedNodeMap nodeMap= node.getAttributes();
    for(int i=0;i<nodeMap.getLength();i++){
    String nameAttr= nodeMap.item(i).getNodeName();
    String valueAttr= nodeMap.item(i).getNodeValue();
    System.out.println(nameAttr+":"+valueAttr);
    }

    }
    public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
    DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance(); //创建一个实例工厂
    DocumentBuilder builder=factory.newDocumentBuilder(); //创建文档构建模型

    Document doc= builder.parse("src/NewFile.xml");
    NodeList nodelist= doc.getElementsByTagName("students");
    Element element=(Element)nodelist.item(0);
    NodeList stuList= element.getElementsByTagName("student");
    for(int i=0;i<stuList.getLength();i++){
    Element stu=(Element)stuList.item(i);
    System.out.println("姓名:"+stu.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
    getNodeAttr(stu.getElementsByTagName("name").item(0));
    System.out.println("性别:"+stu.getElementsByTagName("sex").item(0).getFirstChild().getNodeValue());
    System.out.println("年龄:"+stu.getElementsByTagName("age").item(0).getFirstChild().getNodeValue());
    System.out.println("============================");
    }

    }

    }

  • 相关阅读:
    Linux多线程Pthread学习小结
    TCP三次握手/四次挥手
    内存管理内幕
    Delphi 中分发设计时包
    一个小的算法问题解决
    写了一个验证数字范围的正则表达式
    用 XML 文件持久化和恢复图片信息
    string.Empty 和 "" 并不总是可以互换的
    博客园用的 FreeTextBox 有 bug
    乱花渐欲迷人眼。。。
  • 原文地址:https://www.cnblogs.com/lmq3321/p/6672379.html
Copyright © 2020-2023  润新知