Java Web之JSP操作XML(XML的文档结构 语法和注释、dom4j的下载与配置 应用dom4j创建、解析和修改XML)

简介: Java Web之JSP操作XML(XML的文档结构 语法和注释、dom4j的下载与配置 应用dom4j创建、解析和修改XML)

前言


XML是eXtensible Markup Language(可扩展标记语言)的缩写,是SGML(标准通用化标记语言)的一个子集 用于提供数据描述格式 适用于不同应用程序间的数据交换,而且这种交换不以预先定义的一组数据结构作为前提,增强了可扩展性。


一、XML文档结构

1666443388413.jpg

一个基本的XML文档通常由序言和文档元素两部分组成


1:序言


可以包括XML声明 处理指令和注释 XML文档的第一行通常是XML声明 语法如下

<? xml version="version" encoding="value" standalone="value"?>


standalone 用于指定XML文档是否和另一个外部文档嵌套使用  yes则为一个独立的文档


2:文档元素


XML文档中的元素是以树形分层结构排列的 一个元素可以嵌套在另一个元素中,XML文档中有且只有一个顶层元素 称为文档元素或根元素

<tagname>content</tagname>


XML语法要求


1:XML文档必须有一个顶层元素 其他元素必须嵌入在顶层元素中


2:元素嵌套要正确 不能重叠或者跨越


3:每一个元素必须同时拥有起始标记和结束标记


4:元素类型名要完全匹配


5:XML元素类型名区分大小写


6:元素类型名称不可以以 -开头 也不可以包含空格和:


7:元素可以包含属性 但属性值必须用单引号或者双引号括起来


为XML文档中 的元素定义属性

<info id="1">


XML的注释


注释以<!--开始  以字符串-->结束


处理字符数据


在XML文档中 有些字符会被XML解析器当作标记进行处理 如果希望把这些字符作为普通字符处理,就需要使用实体引用或CDATA段


< 实体引用为&1t  >实体引用为&gt &实体引用为&amp '实体引用为&apos "实体引用为&quot

<?xml version="1.0" encoding="GBK"?>
<placard version="2.0">
<info id="1">
 <title>重要通知</title>
 <content>&amp;nbsp;&amp;nbsp;明天下午三点</content>
 <pubDate>2022-10-17</pubDate>
</info>
</placard>


使用CDATA段


CDATA段是一种用来包含文本的方法 其内部的所有内容都会被XML解析器当作普通文本  所以任何符号都不会被认为是标识符 语法如下

<![CDATA[文本内容]]>


二、dom4j简介


dom4j是sourceforge.net上的一个Java开源项目 主要用于操作XML文档 如 创建XML文档和解析XML文档 dom4j应用于Java平台 采用了Java集合框架并完全支持DOM SAX JAXP是一种适合Java程序员使用的Java XML解析器


dom4j的下载与配置


1:进入网址dom4j


2:点击Download下载最新版本的dom4j


3:将文件解压后  将dom4j.1.6.1.jar文件和lib文件夹下的jaxen-1.1-beta-6.jar文件配置到构建路径下中  或者将这两个文件直接复制到项目的lib文件夹中


三、创建XML文档


dom4j组件的一个最重要的功能就是创建XML文档 通过该组件可以很方便的创建XML文档


1:创建XML文档对象


代码如下

Document document=DocumentHelper.createDocument();


2:创建根节点


为XML文档创建根节点 首先需要创建一个普通节点  然后调用方法将该节点设置为根节点


创建一个普通节点语法如下

public static Element createElement(String name)


设置为根节点

public void setRootElement(Element rootElement)


3:添加注释

public Element addComment(String comment)
 placard.addComment("芝士根节点");


4:添加属性

public Element addAttribute(String name,String value)


5:设置节点的内容

public void setText(String text)


6:设置编码

public void setEncoding(String encoding)


7:设置输出格式

public static OutputFormat createPrettyPrint()


输出XML文档


1:未设置输出格式

XMLWriter writer=new XMLWriter(new FileWriter(fileURL));
writer.write(document);
writer.close();


2:已经设置了输出格式或编码集

XMLWriter writer=new XMLWriter(new FileWriter(fileURL),format);
writer.write(document);
writer.close();


四、解析XML文档


构建XML文档对象

SAXReader reader=new SAXReader();
Document document=reader.read(new File(fileURL));


获取根节点

Element placard=document.getRootElement();


获取子节点


1:element方法

用于获取指定名称的第一个节点

public Element element(String name)


2:elements方法

用于获取指定名称的全部节点

public List elements(String name)


五、修改XML文档


1:修改节点


在修改XML文档的节点前 首先需要查询到该节点


查询符合条件的唯一节点

public Node selectSingleNode(String xpathExpression)


查询符合指定条件的节点列表

public List selectNodes(String xpathExpression)


获取到要修改的节点后 就可以应用前面的方法对该节点进行修改操作


2:删除节点


同理首先查询你要删除的节点 方法同上


然后用remove方法删除该节点

public boolean remove(Element element)

1666443769043.jpg

1666443780311.jpg

相关文章
|
8月前
|
存储 Java 容器
Java基本语法详解
本文深入讲解了Java编程的基础语法,涵盖数据类型、运算符、控制结构及数组等核心内容,帮助初学者构建坚实的编程基础。
|
7月前
|
存储 SQL NoSQL
Redis-常用语法以及java互联实践案例
本文详细介绍了Redis的数据结构、常用命令及其Java客户端的使用,涵盖String、Hash、List、Set、SortedSet等数据类型及操作,同时提供了Jedis和Spring Boot Data Redis的实战示例,帮助开发者快速掌握Redis在实际项目中的应用。
607 1
Redis-常用语法以及java互联实践案例
|
7月前
|
Java
Java基础语法与面向对象
重载(Overload)指同一类中方法名相同、参数列表不同,与返回值无关;重写(Override)指子类重新实现父类方法,方法名和参数列表必须相同,返回类型兼容。重载发生在同类,重写发生在继承关系中。
213 1
|
9月前
|
Java 数据库连接 数据库
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
本文全面总结了Java核心知识点,涵盖基础语法、面向对象、集合框架、并发编程、网络编程及主流框架如Spring生态、MyBatis等,结合JVM原理与性能优化技巧,并通过一个学生信息管理系统的实战案例,帮助你快速掌握Java开发技能,适合Java学习与面试准备。
423 2
Java 相关知识点总结含基础语法进阶技巧及面试重点知识
|
8月前
|
算法 Java 测试技术
零基础学 Java: 从语法入门到企业级项目实战的详细学习路线解析
本文为零基础学习者提供完整的Java学习路线,涵盖语法基础、面向对象编程、数据结构与算法、多线程、JVM原理、Spring框架、Spring Boot及项目实战,助你从入门到进阶,系统掌握Java编程技能,提升实战开发能力。
552 0
|
9月前
|
存储 安全 Java
从基础语法到实战应用的 Java 入门必备知识全解析
本文介绍了Java入门必备知识,涵盖开发环境搭建、基础语法、面向对象编程、集合框架、异常处理、多线程和IO流等内容,结合实例帮助新手快速掌握Java核心概念与应用技巧。
251 0
|
缓存 安全 Java
java面试-基础语法与面向对象
本文介绍了 Java 编程中的几个核心概念。首先,详细区分了方法重载与重写的定义、发生阶段及规则;其次,分析了 `==` 与 `equals` 的区别,强调了基本类型和引用类型的比较方式;接着,对比了 `String`、`StringBuilder` 和 `StringBuffer` 的特性,包括线程安全性和性能差异;最后,讲解了 Java 异常机制,包括自定义异常的实现以及常见非检查异常的类型。这些内容对理解 Java 面向对象编程和实际开发问题解决具有重要意义。
|
运维 Cloud Native Java
postman发起post请求遇到报错:java.io.FileNotFoundException (文件名、目录名或卷标语法不正确。)
遇到bug报错,多猜可能的原因,控制变量反复测试,直至找到问题的关键,然后再思考如何解决或者回避。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来
|
JSON JavaScript 前端开发
蓝桥杯web组赛题解析和杯赛技巧
本文作者是一位自学前端两年半的大一学生,在第十五届蓝桥杯Web组比赛中获得省一和国三。文章详细解析了比赛题纲,涵盖HTML、CSS、JavaScript、Echarts和Vue等技术要点,并分享了备赛技巧和比赛经验。作者强调了多写代码和解题思路的重要性,同时提供了省赛和国赛的具体流程及注意事项。希望对参赛者有所帮助。
1505 11
|
Java
java do while 的语法怎么用?
java do while 的语法怎么用?
460 3

推荐镜像

更多
  • DNS