使用JAXP对XML文档进行DOM解析

【前言】

   璐小编在之前学习BS的时候接触过XML(请戳:【XML】基础知识初步认识),后来在项目中我们也会遇到XML的配置文件,现在学习Java又遇到对XML的文档内容进行解析。看来对于XML的认知是不断加深的过程~

   本篇简介XML解析的方式以及使用Jaxp对XML文档进行dom解析。

【XML解析】

    对于XML解析方式,有DOM文档对象模型和SAX两种。前者是官方的规范,后者则是XML社区事实上的标准。根据它们各自的优缺点来斟酌使用哪种方式。

    现在已经有很多开发包来帮助我们对XML进行解析,比如sun公司的Jaxp,它由org.w3c.dom、  org.xml.sax、javax.xml 等开发包组成。也有后来从Jdom分支出去的团队开发的dom4j,dom4j在实践中使用较多,下篇博客会做简要介绍,看官不要错过~                   

【Jaxp对XML文档进行DOM解析】

    在Jaxp和dom4j之间,前者是sun公司的标准,后者则是实际开发中比较常用的开发包。但是我们还是有必要了解一下官方的标准,所以下面分享使用dom方式对XML文档进行读取。(如看官对增删改代码有需要,小编后续更新)

     ❀使用dom方式,创建工厂,得到dom解析器,使用解析器解析文档这三个步骤是基础,在此基础上再写具体读取XML文档的哪些节点内容的代码。       

[java] view plain copy

  1. import javax.xml.parsers.DocumentBuilderFactory;  
  2. import org.junit.Test;  
  3. import org.w3c.dom.Document;  
  4. import org.w3c.dom.Node;  
  5. import org.w3c.dom.NodeList;  
  6. //dom方式对XML文档进行CRUD
  7. public class Demo3 {  
  8. //读取XML文档  <书名>Java开发</书名> 节点的值
  9. @Test
  10. public void read1() throws Exception{  
  11. //1.创建工厂
  12.         DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();          
  13. //2.得到dom解析器
  14.         DocumentBuilder builder=factory.newDocumentBuilder();  
  15. //3.解析XML文档,得到代表文档的Document
  16.         Document document=builder.parse("src/book.xml");  
  17. //得到标签的节点
  18.         NodeList list=document.getElementsByTagName("书名");  
  19.         Node node = list.item(1);  
  20. //读取节点的值
  21.         String content=node.getTextContent();  
  22.         System.out.println(content);  
  23.     }  
  24. }  

       运行结果就是你所要读取的节点书名的值。小编使用Junit运行,结果值就是书名,此处不再贴图~

【小结】

    对于同一个知识点的学习反复又一次深入,了解了不同的侧面,对一个点的认识也再不断的完善。下篇文章简述使用dom4j对XML文档的解析,尽请期待。

    本文如述偏颇,请看官评论指正,谢谢您的阅读~

原文链接:http://blog.csdn.net/w15732624773/article/details/71242182

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java面试通关手册

值得保存的 synchronized 关键字总结

本文是对 synchronized 关键字使用、底层原理、JDK1.6之后的底层优化以及和ReenTrantLock对比做的总结。如果没有学过 synchron...

6300
来自专栏开发

Kotlin开发指南

最近用kotlin重写了项目中的部分模块,领略到了这个Google官方推荐语言的魅力。

58640
来自专栏JAVA烂猪皮

BAT面试常的问题和最佳答案

客户端发出http请求,web服务器将请求转发到servlet容器,servlet容器解析url并根据web.xml找到相对应的servlet,并将reques...

10620
来自专栏轻量级微服务

spring-boot-starter-grpc 不同序列化方式性能测试及选型

Github 地址:https://github.com/alipay/sofa-hessian

29830
来自专栏java一日一条

Java 理论与实践: 正确使用 Volatile 变量

Java 语言中的 Volatile 变量可以被看作是一种 “程度较轻的 synchronized”;与 synchronized 块相比,volatile 变...

7720
来自专栏美团技术团队

Android增量代码测试覆盖率工具

前言 美团点评业务快速发展,新项目新业务不断出现,在项目开发和测试人员不足、开发同学粗心的情况下,难免会出现少测漏测的情况,如何保证新增代码有足够的测试覆盖率是...

75490
来自专栏恰童鞋骚年

.NET单元测试的艺术-3.测试代码

开篇:上一篇我们学习单元测试和核心技术:存根、模拟对象和隔离框架,它们是我们进行高质量单元测试的技术基础。本篇会集中在管理和组织单元测试的技术,以及如何确保在真...

9130
来自专栏Java帮帮-微信公众号-技术文章全总结

Java并发编程,一定要有自己的理解【面试+工作】

编写优质的并发代码是一件难度极高的事情。Java语言从第一版本开始内置了对多线程的支持,这一点在当年是非常了不起的,但是当我们对并发编程有了更深刻的认识和更多的...

16970
来自专栏JavaEdge

LDAP认证模式简介1. 目录服务2. LDAP特点3. LDAP组织数据的方式4. 基本概念

目录是一个为查询、浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好像Linux/Unix系统中的文件目录一样 目录数据库和关系数据库不同,它有优...

26330
来自专栏炉边夜话

写程序应该注意的地方

1. 对于文本编辑框,一定要判断是否含有非法字符。对于数字型一定要判断是否含有非数字。对于字符型,一定要判断是否在允许的字符内。

19530

扫码关注云+社区

领取腾讯云代金券