操作xml字符串_XML基础知识总结

本文主要介绍了XML的基本概念,包括其可扩展性和用途,如配置文件、小型数据库和数据传输。详细阐述了XML的语法,如文档声明、标签定义、属性、注释和特殊字符。此外,还讲解了XML的约束技术,如DTD和Schema,以及解析XML的DOM和SAX方法。最后,提到了使用dom4j和Jsoup操作XML的示例。
摘要由CSDN通过智能技术生成

fd2dfa8b1bfb1dd21d5d31e87769cde8.png

XML:可扩展标记型语言

随着json等一些技术的普及,似乎xml的路子越来越窄,虽然xml的一些功能被其他的一些技术代替,但是学习xml还是非常有必要,如果用xml存储一些大量数据,还是有一定优势的,就算你不管这些,但是现有的很多框架以及技术的配置文件都存在于xml中,最起码你得对它的结构以及一些基本用法有一定了解

(一) 基本概述

(1) 概念

XML:Extensible Markup Language:可扩展标记型语言

标记型:使用标签来操作,html就是一种常见的标记型语言

可扩展:可以自定义标签,甚至可以用中文写标签 Eg:<person></person <张三><张三>

(2) 用途

xml 主要用来存储数据,体现在作配置文件,或者充当小型数据库,在网络中传输数据

A:配置文件:例如配置mysql数据库

前面我们常常书写 一个 jdbc.properties文件来做配置文件,好处呢就是如果想修改数据库的信息,不需要修改源代码,只要修改配置文件就可以了,而xml也可以作为配置文件来使用

  url=jdbc:mysql://localhost:3306/db1
  user=root
  password=root99
  driver=com.mysql.jdbc.Driver
  
  <!--例如模拟配置mysql数据库 只为假设,与前面知识对应,实际配置文件后期会很常见-->
  <?xml version="1.0" encoding="UTF-8"?>
  <config>
      <dbinfo>
          <dbDriver>com.mysql.jdbc.Driver</dbDriver>
          <dbUrl>jdbc:mysql://localhost:3306/db1</dbUrl>
          <username>root</username>
          <password>root99</password>
  </config>

B:充当小型数据库

我们可以在xml中存储一些数据,让它充当一个小型的数据库

  <?xml version="1.0" encoding="UTF-8"?>
  <student> 
      <stu> 
          <id>001</id>  
          <name>zhangsan</name>  
          <age>20</age> 
      </stu>  
      <stu> 
          <id>002</id>  
          <name>lisi</name>  
          <age>30</age> 
      </stu>  
  </student>

C:传输数据

在网络编程中,我们或多或少接触过,例如如何实现一个简单的聊天室,基本原理是这样的,一个服务器端,多个客户端,当客户端1发送数据后,服务器端接收到数据,并且对数据进行一定的审核(是否有非法敏感字)以及格式的处理,再将数据发送到每一个客户端中

刚开始的时候,我们一般选择使用字符串直接传递内容,但是却不是很利于程序的后期维护,而使用xml就能对后期程序的维护更加友好

  <?xml version="1.0" encoding="UTF-8"?>
  <message id="1">
      <sender>账号1</sender>
      <getter>账号2</getter>
      <content>发送的信息</content>
      <ip>ip地址</ip>
  </message>

(二) xml语法

xml文档的后缀名为 .xml

(1) 文档声明

创建一个xm文件后,第一步就是 必须要有 一个文档声明(写了文档声明之后,表写xml文件的内容)

  <?xml version="1.0" encoding="UTF-8"?>
  • version : xml版本,必须写
  • encoding:xml编码 常见编码: GBK、UTF-8、ISO8859-1(不包含中文)
    • 保存时编码和设置打开时候的编码需要一致,否则会出现乱码
  • standalone:是否需要依赖其他文件 yes/no

(2) 标签的定义

注意事项

  1. 有始有终:<person></peoson>
  2. 合理嵌套:<aa><bb></bb></aa>
  3. 空格和换行均当做内容来解析,所以可能我们需要注意一些缩进的问题

名称规则

  1. xml 代码区分大小写
  2. 名称不能以数字或者标点符号开始
  3. 不能以 xml、XML、Xml等开头
  4. 不能包含空格和冒号

(3) 属性的定义

  1. 一个标签上可有多个属性 <person id1="aaa" id2="bbb"></person>
  2. 属性名称和值之间使用 = 连接,属性值用引号包起来(单引号和双引号都可以)

(4) 注释

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

注释不能嵌套,并且不能放到第一行,第一行必须方式文档声明

(5) 特殊字符

如果想在xml中输入特殊字符,需要对字符进行转义,因为 < 等会被当做标签

字符转义字符描述&&和<<小于号>>大于号""双引号''单引号

若多个字符都需要转义,则可以将这些内容存放到CDATA里面

  <![CDATA[ 内容 ]]>

(七) PI指令 (处理指令)

可以在xml设置样式

  <?xml-stylesheet type="text/css" href="css的路径"?>

(三) xml约束

为什么需要用到约束呢?比如我们现在定义一个 student.xml文件,我们想要在其中保存关于学生的信息,例如id,name,age,但是如果随便写入一个标签 例如 <你好> 从语法的角度上虽然是符合规范的,但是这显然与我们想要存储的东西没有任何关系,所以我们需要通过xml约束技术,约束xml中只能出现的元素

分类

  • DTD:一种相对简单的约束技术
  • Schema:一种相对复杂的约束技术,看懂即可

DTD约束

(1) dtd的引入方式(三种)

A:使用内部的dtd文件,即将约束规则定义在xml文档中

  <!DOCTYPE 根元素名称 [
      <!ELEMENT person (name,age)>
      <!ELEMENT name (#PCDATA)>
      <!ELEMENT age (#PCDATA)>
  ]>

B:引入外部的dtd文件

  <!DOCTYPE 根元素名称 SYSTEM "dtd路径">

C:使用外部的dtd文件(网络上的dtd文件)

  <!DOCTYPE 根元素 PUBLIC "DTD名称" "DTD文档的URL">
  ​
  例如使用 struts2框架 使用配置文件 所使用 外部的dtd文件
  ​
  <!DOCTYPE struts PUBLIC   "-//Apache Software Foundation//DTD
  Struts Configuration 2.0//EN"    
  "http://struts.apache.org/dtds/struts-2.0.dtd">

(2) 使用dtd定义元素

  <!ELEMENT 元素名 约束>

A:简单元素(没有子元素)

  ELEMENT name (#PCDATA)>
      (#PCDATA): 约束name是字符串类型
      EMPTY : 元素为空(没有内容)
          - <sex></sex>
      ANY:任意

B:复杂元素

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值