本篇文章介绍了,在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解析xml实例_在java中使用dom解析xml的示例分析相关推荐

  1. java继承数组实例_【Java】理解封装、继承、多态和对象数组的综合实例(简易的租车系统,附代码)...

    一.Drive.java(汽车类 - 父类) package Z_CarManger; import java.io.ObjectInputStream.GetField; public abstra ...

  2. java静态多态实例_[后续] Java 中类的实例化过程之多态篇--(终于发现Java 原来是这样则的玩的)...

    这篇博文依然和大家分享Java 类的实例化过程 值多态篇.和往常一样,直接来上这这阿里的道面试题: 父类的声明如下所示: 1 public classParentD {2 //1.类变量进行初始化 3 ...

  3. java网络编程实例_关于java网络编程的实例代码

    服务器端的写法 package com.chinasofti.corejava.ch22; import java.io.BufferedReader; import java.io.IOExcept ...

  4. JAVA中利用DOM解析XML文档

    JAVA中利用DOM解析XML文档 package org.sws.utils; import java.io.File;import java.io.IOException; import java ...

  5. java.lang.IllegalArgumentException: 字符[_]在域名中永远无效。 at

    [http-nio-8080-exec-1] org.apache.coyote.AbstractProcessor.parseHost [xxx_tomcat] 是无效主机注意:更多的请求解析错误将 ...

  6. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  7. 计算机网络时延图,计算机网络中网站性能延迟加载图像的示例分析

    计算机网络中网站性能延迟加载图像的示例分析 发布时间:2021-06-09 11:38:56 来源:亿速云 阅读:95 作者:小新 这篇文章给大家分享的是有关计算机网络中网站性能延迟加载图像的示例分析 ...

  8. java list 元素排序_对arraylist中元素进行排序实例代码

    rrayList中的元素进行排序,主要考查的是对util包中的Comparator接口和Collections类的使用. 实现Comparator接口必须实现compare方法,自己可以去看API帮助 ...

  9. matlab分析xml文件_修改Java中的XML文件(DOM分析器)

    matlab分析xml文件 We can modify XML file in Java using DOM parser. We can add elements, remove elements, ...

最新文章

  1. java程序设计pdf下载_Java程序设计(迟立颖) PDF扫描版[21MB]
  2. Python 之 Pandas (四)处理丢失数据
  3. python3 读取.plist文件_Python学习笔记 -5 - 文件操作
  4. hdu2110(普通母函数)
  5. spark 历史版本下载地址
  6. Redis 多线程网络模型全面揭秘|网络硬核系列
  7. sqlplus中批量执行sql脚本(Oracle)
  8. 工作235:splice
  9. sun8134的Blog
  10. fread返回值0 feof返回值为16 问题解决。
  11. pythonp2p网络_python Socket网络编程实现C/S模式和P2P
  12. Pythonic是什么?
  13. C语言学习7:ASCII码表及用法简介
  14. matlab coefs,MATLAB小波分析工具箱常用函数
  15. 监狱智能管理平台 ——监室点名(人脸识别)
  16. 香港拼音-汉字对照表
  17. php编程语言教程,php语言教程
  18. matlab动图启动,MATLAB制作动图或视频
  19. 接力队选拔matlab,这是我见过的操作最好的接力队之一= =
  20. 北邮工程计算-知识点索引--十安辰

热门文章

  1. SQLServer之创建唯一聚集索引
  2. [转]论SOA架构的几种主要开发方式
  3. 【翻译】Ext JS最新技巧——2015-8-11
  4. bindService执行成功后,低概率出现onServiceConnected没有被调用
  5. 【Apache Mina2.0开发之二】自定义实现Server/Client端的编解码工厂(自定义编码与解码器)!...
  6. 脚本自动实现DNS服务各区域配置文件
  7. C#文件和文件文件夹按时间、名称排序-顺序与倒序
  8. 设置Ext tab的宽度自动适应
  9. 使用 Feign 调用分页接口报错:Method has too many Body parameters(亲测)
  10. java Map及Map.Entry详解