准备工作:

1创建java工程

2创建xml文档。

完成后看下面代码:

import org.w3c.dom.*;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory; public class Main { public static void main(String[] args) throws Exception {
//创建一个文档解析器工厂
DocumentBuilderFactory fac= DocumentBuilderFactory.newInstance(); //用上面的工厂创建一个文档解析器
DocumentBuilder builder=fac.newDocumentBuilder(); //用上面的文档解析器解析一个文件放到document对象里
Document doc=builder.parse("src/server.xml"); //获取文档中节点名称为Listener的所有节点,并返回一个节点集合
NodeList listenerList=doc.getElementsByTagName("Listener");
System.out.println("一共有"+listenerList.getLength()+"个节点"); //遍历整个集合(把所有标签名为Listener的节点一个一个拿出来
for (int i=0;i<listenerList.getLength();i++){
System.out.println("===========这是第"+(i+1)+"个listener节点的开始:===========");
//把集合里的每一个listener节点分别拿出来
Node node=listenerList.item(i);
//再把上一个节点中的所有属性拿出来
NamedNodeMap nodeMap= node.getAttributes();
System.out.println("第"+(i+1)+"个节点一共有"+nodeMap.getLength()+"个属性"); //遍历所有属性
for(int j=0;j<nodeMap.getLength();j++){
Node node1=nodeMap.item(j);
System.out.println("第"+(j+1)+"个属性的名称是"+node1.getNodeName());
System.out.println("第"+(j+1)+"个属性的值是"+node1.getNodeValue());
}
//获取节点的所有子节点,注意会把所有换行符也解析为子节点
NodeList childNode=node.getChildNodes(); //遍历所有子节点
for(int k=0;k<childNode.getLength();k++){
if(childNode.item(k).getNodeType()==Node.ELEMENT_NODE){
//这个过滤条件是只将标签节点保留(换行符的节点就删去)
}
System.out.println("===========这是第"+(i+1)+"个节点的结束:===========");
}
}
}

为了方便记忆,在这里拆解一下。我们的目的是解析一个xml文档,所以就需要一个工具。这个工具就叫做DocumentBuilder类的对象,那么这个工具怎么来的呢?是从工厂里面生产出来的,那么工厂怎么来的呢?就得先创建一个工厂:DocumentBuilderFactory。在本例中解析了xml文档中所有名为Listener标签的所有属性。

本人其实非常渴望研究更深入的东西,但现在实在是刚毕业,么办法,所以只能研究研究一些场景怎么用,怎么解析xml文档,至于到底内部是如何实现的,希望各位读者有时间一定要深究下去,这里可能涉及到java的动态代理和工厂模式。

注意:1.<book>红楼梦</book>,当获取到book节点时,其节点名称是book,值是null!!!。因为解析过程中把红楼梦作为book节点的子节点解析。所以要想获取红楼梦,就必须在book节点处获取第一个子节点。也可以用book节点获取textContent(获取该节点下及其子节点孙节点所有的文本节点内容)。

java使用document解析xml文件的更多相关文章

  1. Java 创建过滤器 解析xml文件

    今天写了一个过滤器demo,现在是解析actions.xml文件,得到action中的业务规则:不需要导入任何jar包 ActionFilter过滤器类: package accp.com.xh.ut ...

  2. java使用dom4j解析xml文件

    关于xml的知识,及作用什么的就不说了,直接解释如何使用dom4j解析.假如有如下xml: dom4j解析xml其实很简单,只要你有点java基础,知道xml文件.结合下面的xml文件和java代码, ...

  3. Java是如何解析xml文件的(DOM)

    Java解析xml文件 在Java程序中读取xml文件的过程也称为"解析xml文件": 解析的目的: 获取 节点名和节点值 获取 属性名.属性值. 四中解析方式: DOM SAX ...

  4. JAVA使用SAX解析XML文件

    在我的另一篇文章(http://www.cnblogs.com/anivia/p/5849712.html)中,通过一个例子介绍了使用DOM来解析XML文件,那么本篇文章通过相同的XML文件介绍如何使 ...

  5. java 使用SAX解析xml 文件

    http://www.cnblogs.com/allenzheng/archive/2012/12/01/2797196.html 为了学习方便,忘博主勿究

  6. JAVA中使用DOM解析XML文件

    XML是一种方便快捷高效的数据保存传输的格式,在JSON广泛使用之前,XML是服务器和客户端之间数据传输的主要方式.因此,需要使用各种方式,解析服务器传送过来的信息,以供使用者查看. JAVA作为一种 ...

  7. java中采用dom4j解析xml文件

    一.前言 在最近的开发中用到了dom4j来解析xml文件,以前听说过来解析xml文件的几种标准方式:但是从来的没有应用过来,所以可以在google中搜索dmo4j解析xml文件的方式,学习一下dom4 ...

  8. java解析XML文件

    dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源 ...

  9. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

随机推荐

  1. IP路由配置之---------debugging调试

    实验设备:华三设备N台加一个PC 步骤一,打开屏幕输出开关,开启控制台对系统信息的监视功能 <H3C>terminal debugging #<H3C>terminal mon ...

  2. Numpy三维数组的转置与交换轴

    二维数组的转置应该都知道,就是行列交换 而在numpy中也可以对三维数组进行转置,np.T 默认进行的操作是将0轴与2轴交换 本文主要对三位数组轴交换的理解上发表本人的看法. a = np.array ...

  3. python3 urllib.parse 常用函数

    1.获取url参数 urlparse from urllib import parse url = "https://docs.python.org/3.5/library/urllib.p ...

  4. 微信小程序之----获取设备信息

    1. 获取系统信息        wx.getSystemInfo(OBJECT)        wx.getSystemInfoSync() 同步获取系统信息                回调常用 ...

  5. vue 需求 data中的数据之间的调用

    我遇到过这种情况  就是在我的data中 会有数据调用data中的其他数据 如图  我的alertInfoType需要拿到screeningCondition中type的值 用过vue的都知道 我是不 ...

  6. Mad Libs游戏1

    简单的输入输出 输入代码 name1=input('请输入姓名:') name2=input('请输入一个句子:') name3=input('请输入一个地点:') name4=input('请输入一 ...

  7. dpkg: error: dpkg status database is locked by another process

    First run: lsof /var/lib/dpkg/lock Then make sure that process isn't running: ps cax | grep PID If i ...

  8. C++ 提取网页内容系列之三

    标 题: C++ 提取网页内容系列作 者: itdef链 接: http://www.cnblogs.com/itdef/p/4171659.html 欢迎转帖 请保持文本完整并注明出处 这次继续下载 ...

  9. trinitycore 魔兽服务器源码分析(二) 网络

    书接上文 继续分析Socket.h SocketMgr.h template<class T>class Socket : public std::enable_shared_from_t ...

  10. 团队-爬取豆瓣电影TOP250-开发环境搭建过程

    从官网下载安装包(http://www.python.org). 安装Python 选择安装路径(我选的默认) 安装Pycharm 1.从官网下载安装包(https://www.jetbrains.c ...