在java中使用dom解析xml的示例分析

 更新时间:2013年05月03日 19:28:55   作者:  
本篇文章介绍了,在java中使用dom解析xml的示例分析。需要的朋友参考下

dom是个功能强大的解析工具,适用于小文档

为什么这么说呢?因为它会把整篇xml文档装载进内存中,形成一颗文档对象树

总之听起来怪吓人的,不过使用它来读取点小东西相对Sax而言还是挺方便的

至于它的增删操作等,我是不打算写了,在我看教程的时候我就差点被那代码给丑到吐了

也正因为如此,才有后来那些jdom和dom4j等工具的存在……

不多说,直接上代码

Dom解析示例

复制代码 代码如下:

import java.io.File;

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

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;

 
public class Demo {

    public static void main(String[] args) throws Exception {
        //创建解析器工厂实例,并生成解析器
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        //创建需要解析的文档对象
        File f = new File("books.xml");
        //解析文档,并返回一个Document对象,此时xml文档已加载到内存中
        //好吧,让解析来得更猛烈些吧,其余的事就是获取数据了
        Document doc = builder.parse(f);

        //获取文档根元素
        //你问我为什么这么做?因为文档对象本身就是树形结构,这里就是树根
        //当然,你也可以直接找到元素集合,省略此步骤
        Element root = doc.getDocumentElement();

        //上面找到了根节点,这里开始获取根节点下的元素集合
        NodeList list = root.getElementsByTagName("book");

        for (int i = 0; i < list.getLength(); i++) {
            //通过item()方法找到集合中的节点,并向下转型为Element对象
            Element n = (Element) list.item(i);
            //获取对象中的属性map,用for循环提取并打印
            NamedNodeMap node = n.getAttributes();
            for (int x = 0; x < node.getLength(); x++) {
                Node nn = node.item(x);
                System.out.println(nn.getNodeName() + ": " + nn.getNodeValue());
            }
            //打印元素内容,代码很纠结,差不多是个固定格式
            System.out.println("title: " +n.getElementsByTagName("title").item(0).getFirstChild().getNodeValue());
            System.out.println("author: " + n.getElementsByTagName("author").item(0).getFirstChild().getNodeValue());
            System.out.println();
        }
    }

}

 输出结果:

相关文章

  • Java获取电脑真实IP地址的示例代码

    Java获取电脑真实IP地址的示例代码

    这篇文章主要介绍了Java如何获取电脑真实IP地址,忽略虚拟机等IP地址的干扰,帮助大家更好的理解和使用Java,感兴趣的朋友可以了解下
    2020-09-09
  • Java执行Linux命令简单代码举例

    Java执行Linux命令简单代码举例

    这篇文章主要给大家介绍了关于Java执行Linux命令的相关资料,在开发的过程中要善于利用JAVA面向对象编程的优势,与Linux/Unix命令或Shell脚本的优势,并将二者相结合,需要的朋友可以参考下
    2023-12-12
  • Java HashMap中除了死循环之外的那些问题

    Java HashMap中除了死循环之外的那些问题

    这篇文章主要介绍了Java HashMap中除了死循环之外的那些问题,这些问题大致可以分为两类,程序问题和业务问题,下面文章我们一个一个来看,需要的小伙伴可以参考一下
    2022-05-05
  • Java分布式事务管理框架之Seata

    Java分布式事务管理框架之Seata

    这篇文章主要介绍了Java分布式事务框架Seata,分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上
    2022-07-07
  • Java字符串转成二进制码的方法

    Java字符串转成二进制码的方法

    这篇文章主要为大家详细介绍了Java字符串转成二进制码的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一
    2017-05-05
  • MyBatis与Spring整合过程实例解析

    MyBatis与Spring整合过程实例解析

    这篇文章主要介绍了MyBatis与Spring整合过程实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Java中replace的用法实例讲解

    Java中replace的用法实例讲解

    这篇文章主要给大家介绍了关于Java中replace用法的相关资料,Java中的replace方法是用于字符串替换的方法,它可以接受两个参数,第一个参数是需要被替换的字符串,第二个参数是替换后的字符串,需要的朋友可以参考下
    2024-04-04
  • 以Java代码为例讲解设计模式中的简单工厂模式

    以Java代码为例讲解设计模式中的简单工厂模式

    简单来说,工厂模式就是按照需求来返回一个类型的对象,使用工厂模式的意义就是,如果对象的实例化与代码依赖太大的话,不方便进行扩展和维护,使用工厂的目的就是使对象的实例化与主程序代码就行解耦.来具体看一下:
    2016-05-05
  • Java中String、StringBuffer、StringBuilder的区别详解

    Java中String、StringBuffer、StringBuilder的区别详解

    java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间有什么区别呢?下面小编给大家总结了Java中String、StringBuffer、StringBuilder的区别详解,需要的朋友参考下吧
    2016-06-06
  • JPA如何使用nativequery多表关联查询返回自定义实体类

    JPA如何使用nativequery多表关联查询返回自定义实体类

    这篇文章主要介绍了JPA如何使用nativequery多表关联查询返回自定义实体类,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11

最新评论