一、XML简介

1. 什么是xml?

xml 是可扩展的标记性语言

2. xml的作用?

  • 用来保存数据,而且这些数据具有自我描述性
  • 它还可以做为项目或者模块的配置文件
  • 还可以做为网络传输数据的格式(现在 JSON 为主)

二、XML语法

首先创建一个xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!--
文件的声明
version="1.0" 表示xml的版本
encoding="UTF-8" 表示xml文件本身的编码
-->

图书有 标识,书名,有作者,价格的信息

<?xml version="1.0" encoding="UTF-8" ?>
<!--
文件的声明
version="1.0" 表示xml的版本
encoding="UTF-8" 表示xml文件本身的编码
--> <!-- 多个图书信息-->
<books> <!--一个图书的基本信息-->
<book sn="SN123454321"> <!--属性值-->
<name>雍正王朝</name>
<author>二月河</author>
<price>99</price>
</book> <book sn="SN987654321">
<name>康熙大帝</name>
<author>二月河</author>
<price>99</price>
</book>
</books>
  • 注释和html一样
  • 其他的基本上看看就懂了

注意:

  • XML 文档必须有根元素,并且是唯一的,就如上面的books一样,

三、XML解析

这里主要就使用dom4j技术来解析

首先需要到官网找到这个jar包,直接复制到当前的模块下即可

1. Dom4j编程步骤

  • 先加载 xml 文件创建 Document 对象
  • 通过 Document 对象拿到根元素对象
  • 通过根元素.elelemts(标签名); 可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象
  • 找到你想要修改、删除的子元素,进行相应在的操作
  • 保存到硬盘上或者其他地方

2. 获取document对象

1. 首先创建一个lib包,直接把网上找到的dom4j的jar包复制到lib下,然后

2. 写一个需要解析的books.xml文件

<?xml version="1.0" encoding="UTF-8" ?>

<books>
<book sn="SN123454321">
<name>雍正王朝</name>
<author>二月河</author>
<price>99</price>
</book> <book sn="SN987654321">
<name>康熙大帝</name>
<author>二月河</author>
<price>99</price>
</book>
</books>

3. 获取Document对象的代码

@Test
public void test1() throws DocumentException { // 1. 先创建一个SAXReader对象
SAXReader saxReader = new SAXReader();
// 2. 这个对象用来读取xml文件,返回一个document
Document read = saxReader.read("src/books.xml");
// 3. 打印到控制台,查看是否成功
System.out.println(read); }

3. 遍历标签获取内容

需要分四步操作:

  • 通过创建 SAXReader 对象。来读取 xml 文件,获取 Document 对象
  • 通过 Document 对象。拿到 XML 的根元素对象
  • 通过根元素对象。获取所有的 book 标签对象
  • 遍历每个 book 标签对象。然后获取到 book 标签对象内的每一个元素,再通过 getText() 方法拿到起始标签和结 束标签之间的文本内容

首先写一个Book类,用于存放数据

package com.md.java;
/**
* @author MD
* @create 2020-07-24 8:45
*/
public class Book {
private String sn;
private String name;
private String author;
private Double price; public Book() {
} public Book(String sn, String name, String author, Double price) {
this.sn = sn;
this.name = name;
this.author = author;
this.price = price;
} public String getSn() {
return sn;
} public void setSn(String sn) {
this.sn = sn;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getAuthor() {
return author;
} public void setAuthor(String author) {
this.author = author;
} public Double getPrice() {
return price;
} public void setPrice(Double price) {
this.price = price;
} @Override
public String toString() {
return "Book{" +
"sn='" + sn + '\'' +
", name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
'}';
}
}

读取xml文件中的内容,xml文件就是上面的books.xml

    /**
* 读取books.xml文件生成的Book类
*/
@Test
public void test2() throws DocumentException {
// 1. 读取文件,在Junit测试中,相对路径是从模块名开始的
SAXReader saxReader = new SAXReader();
Document document = saxReader.read("src/books.xml"); // 2. 通过Document对象获取根元素
Element rootElement = document.getRootElement();
//System.out.println(rootElement); // 3. 通过根元素读取book标签对象
// element()和elements()都是通过标签名查找子元素
List<Element> books = rootElement.elements("book"); // 4. 遍历处理book标签转换为Book类
for (Element book:books){
// asXML()把标签对象转换为标签字符串
// System.out.println(book.asXML()); // 5. 获取到了这个标签
Element nameElement = book.element("name");
// 获取这个标签的文本内容
String name = nameElement.getText(); // 或者可以直接获取标签里的文本内容
String price = book.elementText("price");
String author = book.elementText("author"); // 获取属性值
String sn = book.attributeValue("sn"); // 获取完成之后就可以生成了,注意价格是double类型的
System.out.println(new Book(sn,name,author,Double.parseDouble(price))); } }

Java Web(3)-XML的更多相关文章

  1. Java Web的web.xml文件作用及基本配置(转)

    其实web.xml就是asp.net的web.config一个道理. 说明: 一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的. web.xml文件是用来 ...

  2. java web.xml配置详解

    1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...

  3. java web.xml配置详解(转)

    源出处:java web.xml配置详解 1.常规配置:每一个站的WEB-INF下都有一个web.xml的设定文件,它提供了我们站台的配置设定. web.xml定义: .站台的名称和说明 .针对环境参 ...

  4. Java Web中web.xml的作用

    每一个javaWeb工程都有一个web.xml配置文件,那么他到底有什么作用呢?它是每一个web工程都必的必须的吗?   web.xml文件是用来初始化工程配置信息的,比如说welcome页面,fil ...

  5. 利用eclipse新建的java web项目没有部署描述符web.xml文件怎么办?

    原文转自:http://blog.csdn.net/suyu_yuan/article/details/50947007 利用eclipse新建的Java Web项目没有部署描述符web.xml文件, ...

  6. java web开发中的奇葩事web.xml中context-param中的注释

    同事提交了代码.结果除同事之外,其他人全部编译报错.报错说web.xml中配置的一个bean 没有定义.按照报错提示,各种找,无果. 由于代码全部都是提交到svn主干,之前也没有做过备份,只能一步一步 ...

  7. Java web.xml笔记

    Javaweb项目中, web.xml文件其中的各种设置, 就是简单的标注 <?xml version="1.0" encoding="UTF-8"?&g ...

  8. 关于Java Web应用中的配置部署描述符web.xml

    一.web.xml概述 位于每个Web应用的WEB-INF路径下的web.xml文件被称为配置描述符,这个 web.xml文件对于Java Web应用十分重要,每个Java Web应用都必须包含一个w ...

  9. 【转载】Java Web的web.xml文件作用及基本配置

    其实web.xml就是asp.net的web.config一个道理. 说明: 一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的. web.xml文件是用来 ...

随机推荐

  1. python冷知识(续)

    python 冷知识 1.交互式中修改最大递归深度 大家都知道使用递归是有风险的,递归深度过深容易导致堆栈的溢出. 那到底,默认递归次数限制是多少呢? 可以使用sys这个库来查看 >>&g ...

  2. Android 伤敌一千自损八百之萤石摄像头集成(三)

    说一下萤石原生播放 先上代码 private MyOrientationDetector mOrientationDetector; @Override protected void onCreate ...

  3. python中lambda匿名函数与函数之间的关系

  4. sendRedirect()和forward()方法的区别

    sendRedirect()和forward()方法的区别 之前好像曾经整理过,但忘了放在哪里了,好像压根就没整理过,博客里也没有,故今天重新整理一下. 我们知道页面之间的跳转有两种方式:重定向与转发 ...

  5. 给大家分享一下less的使用几个技巧

    1.层级关系 让这个box范围内的全部包进来,这样的话就完美的进行调节,再也不用到处找第几行第几个,我刚才在哪个位置给覆盖了.一看便知! .box{ width: %; height: 300px; ...

  6. 二叉搜索树的后序遍历序列(剑指offer-23)

    题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 题目解析 采用分治法的思想,找到根结点.左子树的序 ...

  7. 谈谈你对 TCP 三次握手和四次挥手的理解

    TCP三次握手: 1.客户端发送syn包到服务器,等待服务器确认接收. 2.服务器确认接收syn包并确认客户的syn,并发送回来一个syn+ack的包给客户端. 3.客户端确认接收服务器的syn+ac ...

  8. C++main函数与命令行参数,退出程序

    本文翻译自:https://docs.microsoft.com/en-us/cpp/cpp/main-function-command-line-args?view=vs-2019 (除动态链接库d ...

  9. python positional argument follows keyword argument

    关键字参数必须跟随在位置参数后面! 因为python函数在解析参数时, 是按照顺序来的, 位置参数是必须先满足, 才能考虑其他可变参数.

  10. 02 drf源码剖析之快速了解drf

    02 drf源码剖析之快速了解drf 目录 02 drf源码剖析之快速了解drf 1. 什么是drf 2. 安装 3. 使用 3. DRF的应用场景 1. 什么是drf drf是一个基于django开 ...