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字节流进行文件的复制操 ...
随机推荐
- Machine Learning in Action ---- kNN
------------恢复内容开始------------ # -*- coding: utf-8 -*- """ Created on Thu Nov 14 19:2 ...
- python的基础认识
一.python的简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写能够解释Python语言语法的解释器.Python这个名 ...
- Centos 6/7 常用命令总结 (基础)
Centos 6/7 常用命令总结 (基础): 参考链接:https://www.cnblogs.com/linhaifeng/p/6045600.html 目录介绍: a) bin目录:用来存放常用 ...
- mpvue开发微信小程序,分享按钮报错:`Cannot read property 'apply' of null`
用mpvue开发微信小程序,分享按钮报错:Cannot read property 'apply' of null onShareAppMessage 是于微信小程序Pages的生命周期钩子,顾这个方 ...
- python--几种快速排序的实现以及运行时间比较
快速排序的基本思想:首先选定一个数组中的一个初始值,将数组中比该值小的放在左边,比该值大的放在右边,然后分别对左边的数组进行如上的操作,对右边的数组进行如上的操作.(分治+递归) 1.利用匿名函数la ...
- C语言1博客作业01
1 你对软件工程专业或者计算机科学与技术专业了解是怎样? 主修大数据技术导论.数据采集与处理实践(Python).Web前/后端开发.统计与数据分析.机器学习.高级数据库系统.数据可视化.云计算技术. ...
- 《JAVA 程序员面试宝典(第四版)》之循环、条件、概率
分享内容:关于集合的使用 书页号码:77页 题目:一个字符串中包含a~z中的多个字符,如有重复,如String data = "aavzcadfdsfsdhshgwasdfasd ...
- MySQL 支持 emoji 图标存储
在MySLQ中 UPDATA 和 INSERT 数据的时候,如果数据上面带有emoji图标,例如:?.?.? 很容易更新或者插入不成功,导致报错. 1 2 Error: ER_TRUNCATED_WR ...
- 【Luogu P2563】【集训Day 4 动态规划】质数和分解
题目链接:Luogu P2563 质数和分解(prime) [问题描述] 任何大于 1 的自然数 N,都可以写成若干个大于等于2且小于等于 N 的质数之和表达式(包括只有一个数构成的和表达式的情况), ...
- SpringBoot系列之集成Thymeleaf用法手册
目录 1.模板引擎 2.Thymeleaf简介 2.1).Thymeleaf定义 2.2).适用模板 3.重要知识点 3.1).th:text和th:utext 3.2).标准表达式 3.3).Thy ...