一、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. activiti学习笔记一

    activiti学习笔记 在讲activiti之前我们必须先了解一下什么是工作流,什么是工作流引擎. 在我们的日常工作中,我们会碰到很多流程化的东西,什么是流程化呢,其实通俗来讲就是有一系列固定的步骤 ...

  2. 暑假集训Day2 状压dp 特殊方格棋盘

    首先声明 : 这是个很easy的题 可这和我会做有什么关系 题目大意: 在n*n的方格棋盘上放置n个车,某些格子不能放,求使它们不能互相攻击的方案总数. 注意:同一行或同一列只能有一个车,否则会相互攻 ...

  3. 并发02--JAVA内存模型

    在并发编程中,需要解决两个问题:线程间如何通信&线程间如何同步 线程同步:控制不同线程操作顺序的机制 解决这两个问题的方案有两种:共享内存&消息传递 共享内存:通过使用共享内存,隐式通 ...

  4. C++ 自动资源释放的单例模式

    代码思想就是程序结束时会自动释放静态/全局资源时删除单例资源. //.h class CSingleton { public: static CSingleton* Singleton() { ret ...

  5. C++ ACE 动态加载链接库

    添加头文件 #include <ace/DLL.h> #include <ace/DLL_Manager.h> 定义函数接口 typedef long (*PFN_TEST)( ...

  6. Android java.lang.NoClassDefFoundError:failed resolution of :Lorg/apache/http/ProtocolVersion

    问题是突然出现的,因为我走测试的时候没有问题,但是正式的时候就这样了,报错APP发生的样式是直接闪退.问题报错位置大概是Applicition类,因为这里基本是都是初始化第三方地方, 问题形成原因:可 ...

  7. ELK安装 docker-compose.yml

    version: '2.2' services: cerebro: image: lmenezes/cerebro:0.8.3 container_name: cerebro ports: - &qu ...

  8. ant design pro 当中改变ant design 组件的样式和 数据管理

    ant design pro 简介 官网简介 链接 https://pro.ant.design/docs/getting-started-cn 项目结构 https://github.com/ant ...

  9. 06 flask源码剖析之路由加载

    06 Flask源码之:路由加载 目录 06 Flask源码之:路由加载 1.示例代码 2.路由加载源码分析 1.示例代码 from flask import Flask app = Flask(__ ...

  10. python 面向对象专题(一):面向对象初识、面向对象结构、类、self、实例化对象

    https://www.cnblogs.com/liubing8/p/11301344.html 目录 Python面向对象01 /面向对象初识.面向对象结构.类.self.实例化对象 1. 面向对象 ...