Web阶段:第六章:XML可扩展标记语言

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: Web阶段:第六章:XML可扩展标记语言

XML 简介

什么是 XML?

XML 指可扩展标记语言(EXtensible Markup Language)。

XML 是一种很像HTML的标记语言。

XML 的设计宗旨是传输数据,而不是显示数据。

XML 标签没有被预定义。您需要自行定义标签。

XML 被设计为具有自我描述性。

XML 和 HTML 之间的差异

XML 被设计用来传输和存储数据,其焦点是数据的内容。 XML 不会做任何事情

HTML 被设计用来显示数据,其焦点是数据的外观。

HTML 旨在显示信息,而 XML 旨在传输信息。

xml的作用?

3个作用:

1、可以用来保存数据。

2、它可以用来做为工程或模块的配置文件。

3、它可以用来做为网络数据传输的格式。

xml语法

1.文档声明。

2.元素(标签)

3.xml属性

4.xml注释

5.文本区域(CDATA区)

1.文档声明。

创建一个xml文件

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

<!-- xml声明 version是版本的意思 encoding是编码 -->

而且这个<?xml 要连在一起写,否则会有报错

属性

version 是版本号

encoding 是xml的文件编码

standalone=“yes/no” 表示这个xml文件是否是独立的xml文件

图书有id属性 表示唯一 标识,书名,有作者,价格的信息

<?xml version="1.0" encoding="UTF-8"?>
<!-- xml声明 version是版本的意思   encoding是编码  -->
<books> <!-- 这是xml注释 -->
  <book id="SN123123413241"> <!-- book标签描述一本图书   id属性描述 的是图书 的编号  -->
    <name>java编程思想</name> <!-- name标签描述 的是图书 的信息 -->
    <author>华仔</author>   <!-- author单词是作者的意思 ,描述图书作者 -->
    <price>9.9</price>    <!-- price单词是价格,描述的是图书 的价格 -->
  </book>
  <book id="SN12341235123"> <!-- book标签描述一本图书   id属性描述 的是图书 的编号  -->
    <name>葵花宝典</name> <!-- name标签描述 的是图书 的信息 -->
    <author>班长</author> <!-- author单词是作者的意思 ,描述图书作者 -->
    <price>5.5</price>  <!-- price单词是价格,描述的是图书 的价格 -->
  </book>
</books>

xml注释

html 和 XML 注释 一样 : <!-- html 注释 -->

元素(标签)

什么是xml元素?

元素是指从开始标签到结束标签的内容。

例如:<title>java编程思想

元素 我们可以简单的理解为是 标签。

Element 翻译 元素

XML 命名规则

XML 元素必须遵循以下命名规则:

2.1)名称可以含字母、数字以及其他的字符

例如:

<book id="SN213412341"> <!-- 描述一本书 -->
  <author>班导</author> <!-- 描述书的作者信息 -->
  <name>java编程思想</name> <!-- 书名 -->
  <price>9.9</price> <!-- 价格 -->
</book>

名称不能以数字或者标点符号开始

名称不能包含空格

xml中的元素(标签)也 分成 单标签和双标签:

单标签

格式: <标签名 属性=”值” 属性=”值” … />

双标签

格式:< 标签名 属性=”值” 属性=”值” …>文本数据或子标签</标签名>

语法规则:

所有 XML 元素都须有关闭标签(也就是闭合)

XML 标签对大小写敏感

XML必须正确地嵌套

XML 文档必须有根元素

XML 的属性值须加引号

XML中的特殊字符

文本区域(CDATA区)

CDATA 格式:

<![CDATA[ 这里可以把你输入的字符原样显示,不会解析xml ]]>

xml解析技术介绍

xml可扩展的标记语言。

不管是html文件还是xml文件它们都是标记型文档,都可以使用w3c组织制定的dom技术来解析。

document对象表示的是整个文档(可以是html文档,也可以是xml文档)

早期JDK为我们提供了两种xml解析技术Dom和Sax简介(已经过时,但我们需要知道这么个东西)

dom解析技术是W3C组织制定的,而所有的编程语言都对这个解析技术使用了自己语言的特点进行实现。

Java对dom技术解析标记也做了实现。

sun公司在JDK5版本对 dom解析技术进行升级:SAX( Simple API for XML )

SAX解析,它跟W3C制定的解析不太一样。它是以类似事件机制通过回调告诉用户当前正在解析的内容。

它是一行一行的读取xml文件进行解析的。不会创建大量的dom对象。

所以它在解析xml的时候,在内存的使用上。和性能上。都优于Dom解析。

第三方的解析:

jdom 在dom基础上进行了封装 、

dom4j 又对jdom 进行了封装。

pull 主要用在Android 手机开发,是在跟sax非常类似都是事件机制解析xml文件。

这个Dom4j 它是第三方的解析技术。我们需要使用第三方给我们提供好的类库才可以解析xml文件。

dom4j解析技术

由于dom4j 它不是sun公司的技术,而属于第三方公司的技术,我们需要使用dom4j 就需要到dom4j官网下载dom4j的jar包。

Dom4j 类库的使用

把 dom4j-1.6.1.jar 类包,拷贝到工程 lib 目录下

然后把jar包添加到当前的classpath路径中

类库添加成功的示意图:

dom4j 目录的介绍:

docs 是 文 档 目 录

如何查Dom4j 的文档

Dom4j 快速入门

lib 目录

src 目录是第三方类库的源码目录:

dom4j 编程步骤:

第一步: 先加载xml文件创建Document对象

第二步:通过Document对象拿到根元素对象

第三步:通过根元素.elelemts(标签名); 可以返回一个集合,这个集合里放着。所有你指定的标签名的元素对象

第四步:找到你想要修改、删除的子元素,进行相应在的操作

第五步,保存到硬盘上

获取document对象

需要解析的books.xml文件内容

<?xml version="1.0" encoding="UTF-8"?>
<books>
  <book sn="SN12341232">
    <name>辟邪剑谱</name>
    <price>9.9</price>
    <author>班主任</author>
  </book>
  <book sn="SN12341231">
    <name>葵花宝典</name>
    <price>99.99</price>
    <author>班长</author>
  </book>
</books>

解析获取Document对象的代码

第一步,先创建SaxReader对象。这个对象,用于读取xml文件,并创建Document

 dom4j 获取Documet对象
@Test
public void getDocument() throws DocumentException {
  // 要创建一个Document对象,需要我们先创建一个SAXReader对象
    SAXReader reader = new SAXReader();
    // 这个对象用于读取xml文件,然后返回一个Document。
    Document document = reader.read("src/books.xml");
    // 打印到控制台,看看是否创建成功
    System.out.println(document);
}

遍历 标签 获取所有标签中的内容(*****重点)

需要分四步操作:

第一步,通过创建SAXReader对象。来读取xml文件,获取Document对象

第二步,通过Document对象。拿到XML的根元素对象

第三步,通过根元素对象。获取所有的book 标签对象

第四小,遍历每个book标签对象。然后获取到book标签对象内的每一个元素,再通过getText() 方法拿到起始标签和结束标签之间的文本内容

  /*
   * 读取xml文件中的内容
   */
  @Test
  public void readXML() throws DocumentException {
//    需要分四步操作:
//      第一步,通过创建SAXReader对象。来读取xml文件,获取Document对象
//      第二步,通过Document对象。拿到XML的根元素对象
//      第三步,通过根元素对象。获取所有的book 标签对象
//      第四小,遍历每个book标签对象。然后获取到book标签对象内的每一个元素,再通过getText() 方法拿到起始标签和结束标签之间的文本内容
//    第一步,通过创建SAXReader对象。来读取xml文件,获取Document对象
    SAXReader reader = new SAXReader();
    Document document = reader.read("src/books.xml");
    // 第二步,通过Document对象。拿到XML的根元素对象
    Element root = document.getRootElement();
    // 打印测试
    // Element.asXML() 它将当前元素转换成为String对象
    // System.out.println( root.asXML() );
//    第三步,通过根元素对象。获取所有的book 标签对象
    // Element.elements(标签名)它可以拿到当前元素下的指定的子元素的集合
    List<Element> books = root.elements("book"); 
//    第四小,遍历每个book标签对象。然后获取到book标签对象内的每一个元素,
    for (Element book : books) {
      // 测试
      // System.out.println(book.asXML());
      // 拿到book下面的name元素对象
      Element nameElement = book.element("name");
      // 拿到book下面的price元素对象
      Element priceElement = book.element("price");
      // 拿到book下面的author元素对象
      Element authorElement = book.element("author");
      // 再通过getText() 方法拿到起始标签和结束标签之间的文本内容
      System.out.println("书名" + nameElement.getText() + " , 价格:" 
          + priceElement.getText() + ", 作者:" + authorElement.getText());
    }
    }

打印内容:

常见错误:

文件找不到异常

相关文章
|
2月前
|
XML Ubuntu Linux
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
部署08---扩展-Win10配置WSL(Ubuntu)环境,WSL系统是什么意思,是Windows系统上的一个子系统, xml的一大特点是直链系统,直接链接你的CPU,硬盘和内存,如何用 WSL部署
|
1月前
|
XML JSON 前端开发
【Web前端揭秘】XML与JSON:数据界的双雄对决,你的选择将如何改写Web世界的未来?
【8月更文挑战第26天】本文深入探讨了XML和JSON这两种广泛使用的数据交换格式在Web前端开发中的应用。XML采用自定义标签描述数据结构,适用于复杂层次数据的表示,而JSON则以键值对形式呈现数据,更为轻量且易解析。通过对两种格式的示例代码、结构特点及应用场景的分析,本文旨在帮助读者更好地理解它们的差异,并根据实际需求选择最合适的数据交换格式。
47 1
|
30天前
|
安全 前端开发 PHP
PHP与现代Web开发:构建高效和可扩展的应用程序
【8月更文挑战第29天】在这篇文章中,我们将深入探讨PHP如何适应现代Web开发的需求。我们将通过实际案例分析,揭示PHP的核心优势,并展示如何利用这些优势来构建高性能、可扩展的Web应用。文章不仅提供理论知识,还包括具体的代码示例,旨在帮助开发者更好地理解和运用PHP解决实际问题。
|
1月前
|
安全 JavaScript 前端开发
PHP与现代Web开发:探索语言的演变和挑战
【8月更文挑战第9天】本文深入探讨了PHP作为一门历史悠久的编程语言在现代Web开发中的地位,分析了它如何适应不断变化的技术环境。文章首先回顾了PHP的起源及其在Web开发中的早期应用,随后讨论了PHP 7及更高版本带来的性能提升和新特性,以及这些变化对开发者的意义。最后,文章探讨了PHP面临的挑战,包括与其他现代编程语言的竞争,安全性问题,以及社区和生态系统的支持。通过这篇文章,读者将获得对PHP在现代Web开发中角色的全面理解,以及它如何继续发展以适应新的技术要求。
26 3
|
28天前
|
Java Spring 容器
彻底改变你的编程人生!揭秘 Spring 框架依赖注入的神奇魔力,让你的代码瞬间焕然一新!
【8月更文挑战第31天】本文介绍 Spring 框架中的依赖注入(DI),一种降低代码耦合度的设计模式。通过 Spring 的 DI 容器,开发者可专注业务逻辑而非依赖管理。文中详细解释了 DI 的基本概念及其实现方式,如构造器注入、字段注入与 setter 方法注入,并提供示例说明如何在实际项目中应用这些技术。通过 Spring 的 @Configuration 和 @Bean 注解,可轻松定义与管理应用中的组件及其依赖关系,实现更简洁、易维护的代码结构。
35 0
|
28天前
|
Rust 安全 开发者
惊爆!Xamarin 携手机器学习,开启智能应用新纪元,个性化体验与跨平台优势完美融合大揭秘!
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的巨大潜力。
30 0
|
28天前
|
开发者 自然语言处理 存储
语言不再是壁垒:掌握 JSF 国际化技巧,轻松构建多语言支持的 Web 应用
【8月更文挑战第31天】JavaServer Faces (JSF) 框架提供了强大的国际化 (I18N) 和本地化 (L10N) 支持,使开发者能轻松添加多语言功能。本文通过具体案例展示如何在 JSF 应用中实现多语言支持,包括创建项目、配置语言资源文件 (`messages_xx.properties`)、设置 `web.xml`、编写 Managed Bean (`LanguageBean`) 处理语言选择,以及使用 Facelets 页面 (`index.xhtml`) 显示多语言消息。通过这些步骤,你将学会如何配置 JSF 环境、编写语言资源文件,并实现动态语言切换。
28 0
|
28天前
|
缓存 搜索推荐 数据库连接
FastAPI 的插件化也太牛了吧!轻松打造可扩展 Web 应用,让你的开发如虎添翼,快来感受这神奇魅力!
【8月更文挑战第31天】在互联网迅速发展的今天,Web应用需求日益多样化。FastAPI作为一种高效灵活的Python Web框架,通过插件化设计帮助开发者轻松构建可扩展应用。插件化让开发者能够根据需求选择合适模块,如用户认证、支付处理等,而无需大幅改动核心代码。这种方式不仅提高了开发效率,还增强了应用的稳定性和适应性,使FastAPI成为未来Web开发的理想平台。
37 0
|
28天前
|
Rust 安全 Java
Rust语言在Web后端的应用:基于Actix-web构建高性能、安全可靠的服务器实践
【8月更文挑战第31天】随着互联网的发展,Web应用对性能和安全性要求不断提高。Rust凭借卓越的性能、内存安全及丰富生态,成为构建高性能Web服务器的理想选择。本文通过一个简单示例,展示如何使用Rust和Actix-web框架搭建基本Web服务器,从创建项目到运行服务器全程指导,帮助读者领略Rust在Web后端开发中的强大能力。通过实践,读者可以体验到Rust在性能和安全性方面的优势,以及其在Web开发领域的无限潜力。
52 0
|
1月前
|
SQL 安全 PHP
探寻PHP的现代演进之路:从Web开发到框架创新——揭秘PHP语言如何引领技术潮流
【8月更文挑战第2天】探索PHP的现代演进:从Web开发到框架创新
46 1