Java修炼——四种方式解析XML_DOM
先写一个XML栗子:
<?xml version="1.0" encoding="UTF-8"?>
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="{book.xsd}">
<book id="1001">
<name>从入门到放弃</name>
<auto>高人</auto>
<price>35.5</price>
</book>
<book id="1002">
<name>从删库到跑路</name>
<auto>高小人</auto>
<price>48.3</price>
</book>
<book id="1003">
<name>从java到光头</name>
<auto>高大人</auto>
<price>16.6</price>
</book>
</books>
这XML里books面有三个子book,book里面又有三个属性。且book有id。我们我们就用DOM来解析这个book.xml
DOM解析xml的步骤:
- 创建一个DocumentBuilderFactory的对象
- 创建一个DocumentBuilder对象
- 通过DocunmentBuilder的parse(...)方法得到Document对象
- 通过getElemntsByTagNAme(...)方法获得结点的列表
- 通过for循环遍历每一个结点
- 得到每个结点的属性和属性值
- 得到每个结点的结点值的节点名。
package com.bjsxt.DOM;
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.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class TestDOM {
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException {
// 1.创建一个DocumentBuilderFactory的对象
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
// 2.创建一个DocumentBuilder对象
DocumentBuilder db=dbf.newDocumentBuilder();
// 3.通过DocunmentBuilder的parse(...)方法得到Document对象
Document doc = db.parse("book.xml");
// 4.通过getElemntsByTagNAme(...)方法获得结点的列表
NodeList nameList = doc.getElementsByTagName("book");
System.out.println(nameList.getLength());
// 5.通过for循环遍历每一个结点
for (int i = 0; i <nameList.getLength(); i++) {
//6.得到每个结点的属性和属性值
Node node = nameList.item(i);
//得到属性集合
NamedNodeMap attributes = node.getAttributes();
//循环遍历每一个属性
for (int j = 0; j <attributes.getLength(); j++) {
//得到每一个属性
Node id = attributes.item(j);
System.out.println("属性名称:"+id.getNodeName()+"\t属性的值:"+id.getNodeValue());
}
}
// 7.得到每个结点的结点值的节点名
System.out.println("\n得到内个结点的结点值和节点名");
for (int i = 0; i < nameList.getLength(); i++) {
System.out.println("\n子节点个数:"+nameList.getLength());
//得到每一个book结点
Node book = nameList.item(i);
NodeList childList = book.getChildNodes();
//遍历每一个结点
for (int j = 0; j <childList.getLength(); j++) {
Node childNode = childList.item(j);
//获取结点的类型
short type = childNode.getNodeType();
if (type==Node.ELEMENT_NODE) {
System.out.println("结点名称:"+childNode.getNodeName()+"----->"+childNode.getTextContent());
}
}
}
}
}
运行截图:

Java修炼——四种方式解析XML_DOM的更多相关文章
- Java修炼——四种方式解析XML_JDOM
四种方式解析XML:DOM JDOM DOM4J SAX JDOM使用前需要上传jar包. 先写一个XML栗子: <?xml version="1.0" ...
- Java修炼——四种方式解析XML_SAX
四种方式解析XML:DOM JDOM DOM4J SAX 先写一个XML栗子: <?xml version="1.0" encoding="U ...
- Java修炼——四种方式解析XML_DOM4J
四种方式解析XML:DOM JDOM DOM4J SAX 注意: DOM4J使用是需要上传jar包的. 先写一个XML栗子: <?xml version="1.0& ...
- java 多线程实现四种方式解析Thread,Runnable,Callable,ServiceExcutor,Synchronized ,ReentrantLock
1.Thread实现: import java.util.Date; import java.text.SimpleDateFormat; public class MyThread extends ...
- JAVA解析XML的四种方式
java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这 ...
- JAVA中的四种JSON解析方式详解
JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...
- 解析xml文件的四种方式
什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没 ...
- 【Java EE 学习 80 下】【调用WebService服务的四种方式】【WebService中的注解】
不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jd ...
- Java实现文件复制的四种方式
背景:有很多的Java初学者对于文件复制的操作总是搞不懂,下面我将用4中方式实现指定文件的复制. 实现方式一:使用FileInputStream/FileOutputStream字节流进行文件的复制操 ...
随机推荐
- uboot启动完成,kernel启动时lcd屏幕出现杂色解决办法
先说说开发环境吧: 1 内核:linux2.6.xx 2 uboot:买开发板带的 注释:在最后我又添加了问题得到完美解决的办法. 问题:uboot启动完成,kernel启动时lcd屏幕出现杂色(比如 ...
- UVa 455 - Periodic Strings解题报告
UVa OJ 455 Periodic Strings A character string is said to have period k if it can be formed by conca ...
- PHP路径指定web路径的方法
PHP路径指定web路径的方法直接在/前面加.就是代表web路径了 不是按照文件路径来算了 <pre>./Public/uploads/suolutu/' . $suijishu . '_ ...
- 009.Kubernetes二进制部署kube-apiserver
一 部署master节点 1.1 master节点服务 kubernetes master 节点运行如下组件: kube-apiserver kube-scheduler kube-controlle ...
- Ubuntu18.04.3 LTS初体验
安装系统 想来虚拟机安装太慢,正好有一台旧电脑,干脆整个乌班图系统. 启动盘工具:UltraISO,老牌工具了. 上官网下载ISO镜像文件: https://cn.ubuntu.com/downloa ...
- nyoj 32-组合数(next_permutation, stack, set)
32-组合数 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:8 submit:11 题目描述: 找出从自然数1.2.... .n(0<n< ...
- django_4数据库2——表外键
表关系: many to one many to many one to one many to one 记录是如何创建出来的? 先创建one,在在创建many,创建时加入ForeignKe ...
- CCF-画字符-详细的注释
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...
- 从壹开始 [ Design Pattern ] 之二 ║ 单例模式 与 Singleton
前言 这一篇来源我的公众号,如果你没看过,正好直接看看,如果看过了也可以再看看,我稍微修改了一些内容,今天讲解的内容如下: 一.什么是单例模式 [单例模式],英文名称:Singleton Patter ...
- HTML_本地存储
在HTML5当中,新增了很多的存储方式,这里我先介绍两种,方便我们的使用和操作,具体新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问 ...