XML 文件

简介

XML 是可拓展的标记性语言。

XML 的主要作用:

  • 用来保存数据,且这些数据具有自我描述性;
  • 作为项目或模块的配置文件
  • 作为网络数据传输的格式,但是现在以 JSON 格式为主。

语法

一般包括五个部分:

  • 文档声明;
  • 元素(标签);
  • XML 属性;
  • XML 注释;
  • 文本区域(CDATA区)。

文档声明

  • <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  • version 版本号
  • encoding XML 的文件编码
  • standalone="yes/no" 表示这个 XML 文件是否是独立的 XML 文件

XML 属性:

  • XML 的标签属性和 HTML 的标签属性是非常类似的,属性可以提供元素的额外信息
  • 一个标签上可以书写多个属性。每个属性的值必须使用引号引起来

语法规则

  • 所有 XML 元素都须有关闭标签,即闭合;
  • XML 标签对大小写敏感;
  • XML 必须正确的嵌套;
  • XML 文档必须有根元素;
  • XML 的属性值必须加引号;
  • XML 的特殊字符,例如 > &gt < &lt

文本区域(CDATA区)

  • CDATA 语法可以告诉 XML 解析器,CDATA 里的文本内容,只是纯文本,不需要 XML 语法解析;
  • 格式:<![CDATA[ 这里可以把你输入的字符原样显示,不会解析 XML ]]>

XML 解析

因为 XML 可扩展的标记语言,不管是 HTML 文件还是 XML 文件它们都是标记型文档,都可以使用 w3c 组织制定的 DOM 技术来解析。

现在比较常用的解析技术是 dom4j,这是一个第三方解析技术。

dom4j

dom4j 是一个用于处理XML的开源框架,该框架与 XPath 集成在一起,并完全支持 DOM,SAX,JAXP 和 Java 平台。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<books>
<book id="SN124156869438690">
<name>Java 编程思想</name>
<author>XPS</author>
<price>30.9</price>
</book>
<book id="SN152353246262166">
<name>Effective Java</name>
<author>GKO</author>
<price>20.9</price>
</book> </books>
package cn.parzulpan.java;

/**
* @Author : parzulpan
* @Time : 2020-12-06
* @Desc :
*/ public class Book {
private String id;
private String name;
private String author;
private Double price; public Book() {
} public Book(String id, String name, String author, Double price) {
this.id = id;
this.name = name;
this.author = author;
this.price = price;
} public String getId() {
return id;
} public void setId(String id) {
this.id = id;
} 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{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", author='" + author + '\'' +
", price=" + price +
'}';
}
}
package cn.parzulpan.java;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; import java.util.ArrayList;
import java.util.List; /**
* @Author : parzulpan
* @Time : 2020-12-06
* @Desc : dom4j 测试
*/ public class Test {
public static void main(String[] args) {
Test test = new Test();
List<Book> books = test.readXML();
books.forEach(System.out::println);
} // 获取Document 对象
public Document getDocument() {
// SaxReader 对象用于读取 xml 文件
SAXReader saxReader = new SAXReader();
Document document = null;
try {
document = saxReader.read("XML/xml/books.xml");
} catch (DocumentException e) {
e.printStackTrace();
}
System.out.println(document);
return document;
} // 读取文件生成 Book 类
public List<Book> readXML() {
ArrayList<Book> list = new ArrayList<>(); Document document = getDocument();
// 通过 Document 对象,拿到 XML 的根元素对象
Element rootElement = document.getRootElement();
// 通过根元素对象,获取所有的 book 标签对象
List<Element> books = rootElement.elements("book");
for (Element book : books) {
// 它将当前元素转换成为 String 对象
System.out.println(book.asXML()); // 拿到 book 的属性值
String id = book.attributeValue("id"); // 拿到 book 下面的 name 元素对象
Element name = book.element("name");
Element author = book.element("author");
Element price = book.element("price"); // getText() 方法拿到起始标签和结束标签之间的文本内容
list.add(new Book(id, name.getText(), author.getText(), Double.parseDouble(price.getText())));
} return list;
}
}

练习和总结

【JavaWeb】XML 文件的更多相关文章

  1. JavaWeb学习——web.xml文件说明

    JavaWeb学习——web.xml文件说明 摘要:本文主要学习了web.xml文件的作用以及如果配置. 是什么 web.xml文件是用来在JavaWeb项目里面初始化配置信息的,比如:访问的首页.S ...

  2. javaweb web.xml文件详解

    web.xml文件详解 前言:一般的web工程中都会用到web.xml,web.xml主要用来配置,可以方便的开发web工程.web.xml主要用来配置Filter.Listener.Servlet等 ...

  3. Java-Web DOM方式解析xml文件

    XML DOM 树形结构: DOM 节点 根据 DOM,XML 文档中的每个成分都是一个节点. DOM 是这样规定的: 整个文档是一个文档节点 每个 XML 元素是一个元素节点 包含在 XML 元素中 ...

  4. JavaWeb:实现文件上传

    JavaWeb:实现文件上传 理解文件上传: 1.上传文件就是把客户端的文件发送给服务器端. 2.HTTP响应的正文部分最常见的是HTML文档,但是也可以是其他任意格式的数据,如图片和声音文件中的数据 ...

  5. JavaWeb实现文件上传下载功能实例解析

    转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...

  6. JavaWeb 之文件的上传下载

    又到了每周更新博客的时候了,每看到自己发布的随笔阅读量上涨的时候就特别开心,我也会尽自己的努力提高自己的水平,总结出通俗易读的学习笔记,还望大家能多多支持!!! ------------------- ...

  7. Spring中利用applicationContext.xml文件实例化对象和调用方法

    Spring中实例化对象和调用方法入门 1.jar包和xml的准备 已上传至百度云盘,链接: https://pan.baidu.com/s/1CY0xQq3GLK06iX7tVLnp3Q 提取码: ...

  8. [android] 采用pull解析xml文件

    /***********2016年5月6日 更新**********************/ 知乎:Android 中有哪几种解析 xml 的类,官方推荐哪种 ? 以及它们的原理和区别? 刘吉财: ...

  9. 深入分析JavaWeb Item40 -- 文件上传和下载

    在Web应用系统开发中,文件上传和下载功能是很经常使用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传.浏览器在上传的过程中是将文件以流的形式提交到server端的.假设 ...

随机推荐

  1. redis学习之——主从复制(replication)

    准备:拥有linux环境,并安装redis mater:主机,进行写操作 slave:从机,进行读操作 一.配置 继续前边的学习.我们是拷贝redis.conf,文件到了/root /redis 下. ...

  2. IDEA注册码(附修改hosts文件的方法)

    推荐获取IDEA注册码的网站:http://idea.lanyus.com/ 亲测好用! 也可复制下边的注册码: K71U8DBPNE-eyJsaWNlbnNlSWQiOiJLNzFVOERCUE5F ...

  3. Hive基础语法5分钟速览

    Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行. 其优点是学习成本低,可以通过 ...

  4. MySQL 5.7.29安装配置

    一.环境准备(关闭防火墙) 1.清除已安装数据库 [root@mysql01 ~]# rpm -qa | grep mariadb mariadb-libs-5.5.35-3.el7.x86_64 [ ...

  5. 用 Roslyn 做个 JIT 的 AOP

    0. 前言 上接:AOP有几种实现方式 接下来说说怎么做AOP的demo,先用csharp 说下动态编织和静态编织,有时间再说点java的对应内容. 第一篇先说Roslyn 怎么做个JIT的AOP d ...

  6. 蒲公英 &#183; JELLY技术周刊 Vol.34: 芜湖~ Flutter

    蒲公英 · JELLY技术周刊 Vol.34 提及跨端,你能想到那些技术?PWA.小程序.Ionic.React Native.Weex--当然也少不了 Flutter,历时 3 年,Flutter ...

  7. Docker(六):Docker安装Kibana

    查找Kibana镜像 镜像仓库 https://hub.docker.com/ 下拉镜像 docker pull kibana:7.7.0 查看镜像 docker images 创建Kibana容器 ...

  8. Flink批处理读取Hive写入MySql

    把hive 表stu77 的数据写入 mysql 表test_stu 中. 中间可以加自己的逻辑. import org.apache.flink.table.api.EnvironmentSetti ...

  9. 【进阶之路】线程池拓展与CompletionService操作异步任务

    大家好,我是练习java两年半时间的南橘,小伙伴可以一起互相交流经验哦. 一.扩展ThreadPoolExecutor 1.扩展方法介绍 ThreadPoolExecutor是可以扩展的,它内部提供了 ...

  10. 【实时渲染】实时3D渲染如何加速汽车线上体验应用推广

    在过去,一支优秀的广告片足以让消费者对一辆汽车产生兴趣.完美的底盘线条或引擎的轰鸣声便会让潜在买家跑到经销商那里试驾.现在,广告还是和往常一样,并没有失去其特性,但86%的买家在与销售交流之前会在网上 ...