四种方式解析XML:DOM      JDOM   DOM4J    SAX

先写一个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的步骤:

  1. 创建一个DocumentBuilderFactory的对象
  2. 创建一个DocumentBuilder对象
  3. 通过DocunmentBuilder的parse(...)方法得到Document对象
  4. 通过getElemntsByTagNAme(...)方法获得结点的列表
  5. 通过for循环遍历每一个结点
  6. 得到每个结点的属性和属性值
  7. 得到每个结点的结点值的节点名。
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的更多相关文章

  1. Java修炼——四种方式解析XML_JDOM

    四种方式解析XML:DOM     JDOM    DOM4J    SAX JDOM使用前需要上传jar包. 先写一个XML栗子: <?xml version="1.0" ...

  2. Java修炼——四种方式解析XML_SAX

    四种方式解析XML:DOM      JDOM    DOM4J    SAX 先写一个XML栗子: <?xml version="1.0" encoding="U ...

  3. Java修炼——四种方式解析XML_DOM4J

    四种方式解析XML:DOM     JDOM    DOM4J    SAX 注意: DOM4J使用是需要上传jar包的. 先写一个XML栗子: <?xml version="1.0& ...

  4. java 多线程实现四种方式解析Thread,Runnable,Callable,ServiceExcutor,Synchronized ,ReentrantLock

    1.Thread实现: import java.util.Date; import java.text.SimpleDateFormat; public class MyThread extends ...

  5. JAVA解析XML的四种方式

    java解析xml文件四种方式 1.介绍 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这 ...

  6. JAVA中的四种JSON解析方式详解

    JAVA中的四种JSON解析方式详解 我们在日常开发中少不了和JSON数据打交道,那么我们来看看JAVA中常用的JSON解析方式. 1.JSON官方 脱离框架使用 2.GSON 3.FastJSON ...

  7. 解析xml文件的四种方式

    什么是 XML? XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 标签没 ...

  8. 【Java EE 学习 80 下】【调用WebService服务的四种方式】【WebService中的注解】

    不考虑第三方框架,如果只使用JDK提供的API,那么可以使用三种方式调用WebService服务:另外还可以使用Ajax调用WebService服务. 预备工作:开启WebService服务,使用jd ...

  9. Java实现文件复制的四种方式

    背景:有很多的Java初学者对于文件复制的操作总是搞不懂,下面我将用4中方式实现指定文件的复制. 实现方式一:使用FileInputStream/FileOutputStream字节流进行文件的复制操 ...

随机推荐

  1. SysTick系统定时器

    1.SysTick定时器介绍 SysTick定时器也叫SysTick滴答定时器,它是Cortex-M3内核的一个 外设,被嵌入在 NVIC 中.它是一个24 位向下递减的定时器,每计数一 次所需时间为 ...

  2. mysql用find_in_set代替like搜索提高性能

    mysql用find_in_set代替like搜索提高性能 <pre>SELECT * from mobantestinfo1 where find_in_set('33',info2); ...

  3. SqlServer设置特定用户操作特定表(插入、删除、更新、查询 的权限设置)

    目录 一.需求场景: 二.操作步骤: 表上右键选择[属性],选择[权限]选项卡: 点击[搜索],在弹出的框中点击[浏览],选择需要设置的用户: 在上面点击[确定]后,就可以在[权限]选项卡中看到权限列 ...

  4. 2019CSP游记

    \(CSP2019\)游记 写在前面 考完,终于深刻地认识到省一似乎和我想象的真不是一个难度.也罢,不然为什么\(NOIP\)改了名还是这么有含金量. 考前一天和一群同学们嚷嚷着要去吃散伙饭,说没拿到 ...

  5. shell中tar加密打包

    tar 打包是一个很常见的操作,但是当打了一个包却又不想让别人看到里面的小秘密的时候就可以使用加密的方法进行打包. 以下是一个脚本实现的加密打包和解密的shell脚本: cat tar_passwor ...

  6. Salesforce学习之路(十三)Aura案例实战分析

    Aura相关知识整合: Salesforce学习之路(十)Aura组件工作原理 Salesforce学习之路(十一)Aura组件属性<aura:attribute /> Salesforc ...

  7. node.js和ionic

    1.安装node.js node -v  检测node文件是否安装成功 node --version  检查node版本号 2.Npm   node package manager 管理工具  管理模 ...

  8. 【前端知识体系-JS相关】10分钟搞定JavaScript正则表达式高频考点

    1.正则表达式基础 1.1 创建正则表达式 1.1.1 使用一个正则表达式字面量 const regex = /^[a-zA-Z]+[0-9]*\W?_$/gi; 1.1.2 调用RegExp对象的构 ...

  9. 作业要求20191031-7 beta week 1/2 Scrum立会报告+燃尽图 05

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2019fall/homework/9915 一.小组情况 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 韩 ...

  10. 详解在Linux系统中安装JDK

    本文以在CentOS 7.6中安装JDK8为例进行安装,其他系统和版本都是大同小异的. 下载 进入Oracle官方网站的下载页面. 首先,接受许可协议,如下图: 然后,根据Linux系统的位数选择要下 ...