XML语言

XML:

XML是可扩展的标记语言
标记语言: 通过标签来描述数据的一门语言(标签有时我们也将其称之为元素)
可扩展:标签的名字是可以自定义的,XML文件是由很多标签组成的,而标签名是可以自定义的
xml学习网站https://www.w3school.com.cn/x.asp

作用:

用于进行存储数据和传输数据
数据交换:不同的计算机语言之间,不同的操作系统之间进行数据交换。
主要作为软件的配置文件

优点:

可读性好
可维护性高

标签的规则:

标签由一对尖括号和合法标识符组成,标签必须成对出现

    <!--标签由一对尖括号和合法标识符组成--><students><!--标签必须成对出现,前边的是开始标签,后边的是结束标签--><student></student><!--特殊的标签可以不成对,但是必须有结束标记--><address/><!--标签中可以定义属性,属性和标签名空格隔开,属性值必须用引号引起来--><student id="1"></student><!--<标签需要正确的嵌套,这是正确的:--><student id="1"><name>张三</name></student><!--这是错误的:--><student id="1"><name>张三</student></name></students>
语法规则:
  1. XML文件的后缀名为:xml
  2. 文档声明必须是第一行第一列
  3. <?xml version=“1.0” encoding=“UTF-8” standalone=“yes”?>
  • version:该属性是必须存在的,这里是版本的意思,必须是1.0
  • encoding:该属性不是必须的,告诉使用者打开当前xml文件的时候应该是使用什么字符编码表(一般取值都是UTF-8)
  • standalone: 该属性不是必须的,描述XML文件是否依赖其他的xml文件,取值为yes/no(yes表示是独立的不依赖)
  1. 必须存在一个根标签,有且只能有一个
  2. XML文件中可以定义注释信息
  3. XML文件中可以存在以下特殊字符
&lt;     <     小于 
&gt;     >     大于 
&amp;    &     和号 
&apos;   '     单引号 
&quot;   "     引号
Document常用方法:
方法名功能说明
Element getRootElement()通过文档对象得到根元素
String getName()获取元素名
List<Element> elements()获取所有子元素
List<Element> elements(String name)获取知名名字的多个子元素
获取文本内容:

通过元素对象得到文本字符串得到文本元素的前提:先得到元素对象
空格、换行、制表符:也是属于文本的一部分,所以在解析xml文件的时候,格式化XML文件要注意。

元素中得到文本有关的方法

Element**元素中的方法说明
String getText()得到元素中文本
String elementTextTrim(元素名)得到子元素中文本,去掉先后空格
String elementText(元素名)得到子元素中文本
Attribute常用方法:
方法名功能说明
String getName()得到属性的名字
String getValue()得到属性的值

得到属性值的两种方式

  1. 先得到Attribute对象,再通过Attribute对象得到属性的值
  2. 通过方法attributeValue()直接得到属性值
解析xml:

DOM(Document Object Model)文档对象模型:就是把文档的各个组成部分看做成对应的对象。 会把xml文件全部加载到内存,在内存中形成一个树形结构,再获取对应的值(说白了就跟洋葱一样,一层一层的获取,先获取根标签,再获取子标签,再获取对应的值)

在这里插入图片描述
常见的解析工具:

JAXP: SUN公司提供的一套XML的解析的API
JDOM: 开源组织提供了一套XML的解析的API-jdom
DOM4J: 开源组织提供了一套XML的解析的API-dom4j,全称:Dom For Java
pull: 主要应用在Android手机端解析XML

解析的准备工作:

  1. 下载dom4j:https://dom4j.github.io/

  2. 将提下载好的dom4j-1.6.1.zip解压,找到里面的dom4j-1.6.1.jar

  3. 在idea中当前模块下新建一个libs文件夹,将dom4j-1.6.1.jar包复制到文件夹中

  4. 选中jar包 -> 右键 -> 选择add as library即可
    在这里插入图片描述

xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!--存储多个学生对象的信息-->
<students><student id="1"><name>韩信</name><age>99</age></student><student id="2"><name>李白</name><age>98</age></student>
</students>

学生类:

public class Student {private String id;private String name;private int age;public Student() {}public Student(String id, String name, int age) {this.id = id;this.name = name;this.age = age;}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 int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"id='" + id + '\'' +", name='" + name + '\'' +", age=" + age +'}';}
}

解析类:

public class XmlTest {public static void main(String[] args) throws FileNotFoundException, DocumentException {// 获取解析器对象SAXReader saxReader = new SAXReader();// 利用解析器把xml文件加载到内存中,并返回一个文档对象Document document = saxReader.read(new FileInputStream("src/xml/demo.xml"));// 获取到根标签Element rootElement = document.getRootElement();// 获取子标签List<Element> elements = rootElement.elements("student");ArrayList<Student> list = new ArrayList<>();// 遍历集合for (Element element : elements) {// 获取id的内容Attribute id = element.attribute("id");String idValue = id.getValue();// 获取name的内容// element:获取指定的子标签Element name = element.element("name");String nameText = name.getText();// 获取age的内容Element age = element.element("age");String ageText = age.getText();// 添加学生到集合Student student = new Student(idValue, nameText, Integer.parseInt(ageText));list.add(student);}// 遍历集合for (Student student : list) {System.out.println(student);}}
}
DTD约束:

什么是约束:

用来限定xml文件中可使用的标签以及属性

编写DTD约束步骤

  1. 创建一个文件,这个文件的后缀名为.dtd
  2. 看xml文件中使用了哪些元素 <!ELEMENT> 可以定义元素
  3. 判断元素是简单元素还是复杂元素
  • 简单元素:没有子元素。
  • 复杂元素:有子元素的元素;
DTD语法规则:

定义元素规则:

在这里插入图片描述
定义属性规则:

定义一个属性的格式为:<!ATTLIST 元素名称 属性名称 属性的类型 属性的约束> 属性的类型: CDATA类型:普通的字符串

属性的约束:

#REQUIRED: 属性必须要写
#IMPLIED: 属性不是必需的
#FIXED value:属性值是固定的

引入DTD约束:

dtd约束文件

<!ELEMENT persons (person+)><!ELEMENT person (name,age)><!--#PCDATA:表示值是字符串--><!ELEMENT name (#PCDATA)><!ELEMENT age (#PCDATA)><!ATTLIST person id CDATA #REQUIRED><!ATTLIST person id CDATA #IMPLIED><!ATTLIST person id CDATA #FIXED value "a">

引入本地dtd:

<!DOCTYPE 根元素名称 SYSTEM ‘DTD文件的路径’>

<?xml version="1.0" encoding="UTF-8" ?>
<!--引入本地dtd-->
<!DOCTYPE persons  SYSTEM 'demo.dtd'>
<persons><person id="01"><name>韩信</name><age>99</age></person><person id="02"><name>李白</name><age>98</age></person>
</persons>

在xml文件内部引入:

<!DOCTYPE 根元素名称 [ dtd文件内容 ]>

<?xml version="1.0" encoding="UTF-8" ?>
<!--内部-->
<!DOCTYPE persons  [<!ELEMENT persons (person+)><!ELEMENT person (name,age)><!--#PCDATA:表示值是字符串--><!ELEMENT name (#PCDATA)><!ELEMENT age (#PCDATA)><!ATTLIST person id CDATA #REQUIRED>]>
<persons><person id="01"><name>韩信</name><age>99</age></person><person id="02"><name>李白</name><age>98</age></person>
</persons>

引入网络dtd:
<!DOCTYPE 根元素的名称 PUBLIC “DTD文件名称” “DTD文档的URL”>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
schema约束:

schema和dtd的区别

  1. schema约束文件也是一个xml文件,符合xml的语法,这个文件的后缀名.xsd
  2. 一个xml中可以引用多个schema约束文件,多个schema使用名称空间区分(名称空间类似于java包名)
  3. dtd里面元素类型的取值比较单一常见的是PCDATA类型,但是在schema里面可以支持很多个数据类型
  4. schema 语法更加的复杂
  5. schema文件用来约束一个xml文件,同时也被别的文件约束着

编写schema约束步骤:

  1. 创建一个文件,这个文件的后缀名为.xsd。
  2. 定义文档声明
  3. schema文件的根标签为:
  4. 定义属性: xmlns=http://www.w3.org/2001/XMLSchema
  5. 定义属性 : targetNamespace =唯一的url地址,指定当前这个schema文件的名称空间。
  6. 定义属性 :elementFormDefault=”qualifified“,表示当前schema文件是一个质量良好的文件。
  7. 通过element定义元素
  8. 判断当前元素是简单元素还是复杂元素

xml文件

<?xml version="1.0" encoding="UTF-8" ?><personsxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http:www.itzhuzhu.com"xsi:schemaLocation="http:www.itzhuzhu.com persons.xsd"
><person id="001"><name>张三</name><age>23</age></person>
</persons>

xsd约束文件

<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"targetNamespace="http:www.itzhuzhu.com"elementFormDefault="qualified"
><!--定义persons复杂元素--><element name="persons"><complexType><sequence><!--定义person复杂元素--><element name="person"><complexType><sequence><!--定义name和age简单元素--><element name="name" type="string"></element><element name="age" type="string"></element></sequence><!--定义属性,required( 必须的)/optional( 可选的)--><attribute name="id" type="string" use="required"></attribute></complexType></element></sequence></complexType></element>
</schema>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

xml中的Document和Attribute

1.Document 导入dom4j的步骤 去官网下载 zip 包。http://www.dom4j.org/ 在项目中创建一个文件夹&#xff1a;lib将dom4j-2.1.1.jar文件复制到 lib 文件夹在jar文件上点右键&#xff0c;选择 Add as Library -> 点击OK在类中导包使用 得到Document对象 步骤&#xff1a;…

XPath表达式

什么是XPath XPath&#xff1a;路径表达式 作用&#xff1a;在DOM解析XML时&#xff0c;通过XPath表达让解析更加简单 XPath表达式分类 绝对路径相对路径全文搜索属性查找 什么是Node对象 DOM树中的每个节点就是Node dom4j中与XPath相关的方法 注&#xff1a;使用XPat…

最详细MySQL的安装与介绍Windows

数据库的安装&#xff1a; 打开下载的mysql安装⽂件双击解压缩&#xff0c;运⾏“mysql-5.5.40-win32.msi”。 选择安装类型&#xff0c;有“Typical&#xff08;默认&#xff09;”、“Complete&#xff08;完全&#xff09;”、“Custom&#xff08;⽤户⾃定义&#xff09;”…

读懂基础机器学习算法

本篇内容主要是面向机器学习初学者&#xff0c;介绍常见的机器学习算法&#xff0c;当然&#xff0c;欢迎同行交流。 哲学要回答的基本问题是从哪里来、我是谁、到哪里去&#xff0c;寻找答案的过程或许可以借鉴机器学习的套路&#xff1a;组织数据->挖掘知识->预测未来。…

在c语言中有函数leapyear定义如下,职业教育概论——职业教育的发展历史超星尔雅答案题库...

职业职业展历有时候,文学造诣高的中国诗歌翻译者在用词华丽方面超过莎士比亚。有int型变量x&#xff0c;教育教育i&#xff0c;j&#xff0c;k&#xff0c;则表达式x(i5,j6,k7)的值为( )从数据表student中查询张姓的所有学生&#xff0c;概论正确的SQL语句是( )史超世界上第一个…

tomcat安装启动配置

服务器&#xff1a; 服务器的概念非常的广泛&#xff0c;它可以指代一台特殊的计算机&#xff08;相比普通计算机运行更快、负载更高、价格更贵&#xff09;&#xff0c;也可以指代用于部署网站的应用。我们这里说的服务器&#xff0c;其实是web服务器&#xff0c;或者应用服务…

JS在页面限制checkbox最大复选数

应该是挺简单的代码, 记录一下分享. 首先最直接的想法就是使用循环, 用局部变量记录已选的checkbox, 达到最大值就将余下的checkbox都禁止选择, 例如以下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ""> <html xmlns"…

c语言 二维数组 文库,c语言二维数组练习题

c语言二维数组练习题 (3页)本资源提供全文预览&#xff0c;点击全文预览即可全文预览,如果喜欢文档就下载吧&#xff0c;查找使用更方便哦&#xff01;19.90 积分完成下列程序代码完成下列程序代码1、 将二维数组(5 行 5 列)的右上半部分置零。 即&#xff1a;1234510000678910…

android陀螺仪轨迹,陀螺仪轨迹法长距离管道测量精度实测分析

陀螺仪轨迹法长距离管道测量精度实测分析陀螺仪轨迹法用于非开挖管道的精准坐标与位置测量已被电力与燃气等行业逐步了解与接受&#xff0c;近两年不断被引入到城市地下管线探测及电力与燃气管道验收标准中。由于管道埋于地下往往不能眼见为实&#xff0c;作为一种新的测量方式…

Spring IOC详解与配置

Spring&#xff1a; 框架&#xff1a; 具有一定功能的半成品软件&#xff0c;基于框架会节省开发成本 框架作用&#xff1a; 提高开发效率、复用性、编写规范、节约维护成本、解耦底层实现原理 Spring&#xff1a; Spring是分层的JavaSE/EE应用full-stack轻量级开源框架Sprin…

android8.0的蓝牙版本,android o 新特性详解 安卓8.0蓝牙音频增强以及更加可爱的表情包...

android 8.0什么时候推出&#xff1f;有哪些新特色&#xff1f;很多安卓用户非常想知道答案吧&#xff01;不用着急&#xff0c;下面是大麦子小编整理出来的安卓8.0新特性详解&#xff0c;希望可以帮到大家。有媒体近日曝光了有关谷歌Pixel XL 2手机会首发Android 8.0系统。现在…

DOM初级篇

DOM是什么、作用、与javascript&#xff1f; DOM是对HTML文档的访问和操作&#xff0c;对文档的增删改查。 DOM相当于是javascript一个类&#xff0c;这个类中提供了多种操作HTML的方法&#xff0c;也可以说DOM是依附在JavaScript上进行操作的。 一、标签的查找命令&#xff1b…

vs2019开发android应用,VS 2019开发APP(一)界面和代码

1.界面在Resources>layout>目录下的*.xml文件就是界面文件2.关联界面接下来&#xff0c;通过将支持代码插入到 MainActivity 类中来添加代码以关联用户界面。在 MainActivity 类中找到 OnCreate 方法&#xff0c;在其中添加关联按钮代码如下&#xff1a;protected overri…

oracle 数据库字段html显示正常text显示不全,layui表格字段表格显示不全(自适应)...

本文将为您描述layui表格字段表格显示不全(自适应),具体操作方法:好记性不如烂笔头。本来就是没什么好记得东西&#xff0c;下次再用时已经想不起来了。问题如下&#x1f41f;使用layui表格&#xff0c;表格字段显示不全&#xff0c;如果超出分配的位置&#xff0c;就会显示省略…

使用 VSCode 编写 .NET Core 项目之初体验

注&#xff1a;本文在根据 微软官方文档指导下&#xff0c;根据自己的学习中整理&#xff0c;并不完全照搬文档&#xff0c;但也大体和文档学习路线相似&#xff0c;主要为记录学习过程。 官方学习地址&#xff1a; https://code.visualstudio.com/docs/other/dotnet https://d…

html模板安装到织梦,织梦网站安装教程 织梦模板通用安装图文教程

织梦模版怎么安装使用呢 下面就把我的经验分享给大家解压文件上传到服务器指定根目录输入主域名访问“例如&#xff1a;//www.jb51.net/install”步骤1&#xff1a;勾选同意协议&#xff0c;点击继续按钮。步骤2&#xff1a;检查系统环境和文件权限&#xff0c;确定权限正确才能…

金乡高考成绩查询2021,金乡一中举行2021届高三年级一模成绩分析暨表彰大会!现场颁奖...

集思广益查缺补漏&#xff0c;全力以赴保驾护航。为增强备考紧迫性&#xff0c;提高备考有效性&#xff0c;激发师生积极性&#xff0c;2021年3月22日晚&#xff0c;山东省金乡一中2021届高三年级一模成绩分析暨表彰大会&#xff0c;在文峰楼二楼报告厅召开&#xff0c;本次会议…

匿名类

一、匿名类&#xff1a;[ C# 3.0/.NET 3.x 新增特性 ] 1.1 不好意思&#xff0c;我匿了 在开发中&#xff0c;我们有时会像下面的代码一样声明一个匿名类&#xff1a;可以看出&#xff0c;在匿名类的语法中并没有为其命名&#xff0c;而是直接的一个new { }就完事了。从外部看来…

MySQL— 进阶

目录 一、视图二、触发器三、函数四、存储过程五、事务 一、视图 视图是一个虚拟表&#xff08;非真实存在&#xff09;&#xff0c;其本质是【根据SQL语句获取动态的数据集&#xff0c;并为其命名】&#xff0c;用户使用时只需使用【名称】即可获取结果集&#xff0c;并可以将…

HTML中del标记是什么意思,HTML del标记

本文概述HTML 标记用于表示已从文档中删除/删除的文本范围。它用作已删除内容的标记。浏览器通常通过在已删除的文本上打一行来呈现它, 尽管可以使用CSS属性更改它。注意&#xff1a;要标识已删除的文本和插入的文本, 请使用带有的标记, 该标记将在文档中显示已删除和插入的文本…