网站首页列表布局设计,网站代理工具,做pc端大型网站 前端用,笑话网站源码下载XML#xff1a; XML是可扩展的标记语言 标记语言: 通过标签来描述数据的一门语言(标签有时我们也将其称之为元素) 可扩展#xff1a;标签的名字是可以自定义的,XML文件是由很多标签组成的,而标签名是可以自定义的 xml学习网站https://www.w3school.com.cn/x.asp 作用#xf…XML XML是可扩展的标记语言 标记语言: 通过标签来描述数据的一门语言(标签有时我们也将其称之为元素) 可扩展标签的名字是可以自定义的,XML文件是由很多标签组成的,而标签名是可以自定义的 xml学习网站https://www.w3school.com.cn/x.asp 作用 用于进行存储数据和传输数据 数据交换不同的计算机语言之间不同的操作系统之间进行数据交换。 主要作为软件的配置文件 优点 可读性好 可维护性高 标签的规则 标签由一对尖括号和合法标识符组成标签必须成对出现 !--标签由一对尖括号和合法标识符组成--students!--标签必须成对出现前边的是开始标签后边的是结束标签--student/student!--特殊的标签可以不成对,但是必须有结束标记--address/!--标签中可以定义属性,属性和标签名空格隔开,属性值必须用引号引起来--student id1/student!--标签需要正确的嵌套这是正确的--student id1name张三/name/student!--这是错误的:--student id1name张三/student/name/students语法规则 XML文件的后缀名为xml文档声明必须是第一行第一列 ?xml version“1.0” encoding“UTF-8” standalone“yes”? version该属性是必须存在的这里是版本的意思必须是1.0encoding该属性不是必须的告诉使用者打开当前xml文件的时候应该是使用什么字符编码表(一般取值都是UTF-8)standalone: 该属性不是必须的描述XML文件是否依赖其他的xml文件取值为yes/noyes表示是独立的不依赖 必须存在一个根标签有且只能有一个XML文件中可以定义注释信息XML文件中可以存在以下特殊字符 lt; 小于
gt; 大于
amp; 和号
apos; 单引号
quot; 引号Document常用方法
方法名功能说明Element getRootElement()通过文档对象得到根元素String getName()获取元素名ListElement elements()获取所有子元素ListElement elements(String name)获取知名名字的多个子元素
获取文本内容 通过元素对象得到文本字符串得到文本元素的前提先得到元素对象 空格、换行、制表符也是属于文本的一部分所以在解析xml文件的时候格式化XML文件要注意。 元素中得到文本有关的方法
Element**元素中的方法说明String getText()得到元素中文本String elementTextTrim(元素名)得到子元素中文本去掉先后空格String elementText(元素名)得到子元素中文本
Attribute常用方法
方法名功能说明String getName()得到属性的名字String getValue()得到属性的值
得到属性值的两种方式 先得到Attribute对象再通过Attribute对象得到属性的值通过方法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 解析的准备工作 下载dom4jhttps://dom4j.github.io/ 将提下载好的dom4j-1.6.1.zip解压找到里面的dom4j-1.6.1.jar 在idea中当前模块下新建一个libs文件夹将dom4j-1.6.1.jar包复制到文件夹中 选中jar包 - 右键 - 选择add as library即可
xml文件
?xml version1.0 encodingUTF-8 ?
!--存储多个学生对象的信息--
studentsstudent id1name韩信/nameage99/age/studentstudent id2name李白/nameage98/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();// 获取子标签ListElement elements rootElement.elements(student);ArrayListStudent 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约束步骤 创建一个文件这个文件的后缀名为.dtd看xml文件中使用了哪些元素 !ELEMENT 可以定义元素判断元素是简单元素还是复杂元素 简单元素没有子元素。复杂元素有子元素的元素 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 version1.0 encodingUTF-8 ?
!--引入本地dtd--
!DOCTYPE persons SYSTEM demo.dtd
personsperson id01name韩信/nameage99/age/personperson id02name李白/nameage98/age/person
/persons在xml文件内部引入
!DOCTYPE 根元素名称 [ dtd文件内容 ]
?xml version1.0 encodingUTF-8 ?
!--内部--
!DOCTYPE persons [!ELEMENT persons (person)!ELEMENT person (name,age)!--#PCDATA表示值是字符串--!ELEMENT name (#PCDATA)!ELEMENT age (#PCDATA)!ATTLIST person id CDATA #REQUIRED]
personsperson id01name韩信/nameage99/age/personperson id02name李白/nameage98/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.dtdschema约束
schema和dtd的区别 schema约束文件也是一个xml文件符合xml的语法这个文件的后缀名.xsd一个xml中可以引用多个schema约束文件多个schema使用名称空间区分名称空间类似于java包名dtd里面元素类型的取值比较单一常见的是PCDATA类型但是在schema里面可以支持很多个数据类型schema 语法更加的复杂schema文件用来约束一个xml文件同时也被别的文件约束着 编写schema约束步骤 创建一个文件这个文件的后缀名为.xsd。定义文档声明schema文件的根标签为定义属性 xmlnshttp://www.w3.org/2001/XMLSchema定义属性 targetNamespace 唯一的url地址指定当前这个schema文件的名称空间。定义属性 elementFormDefault”qualifified“表示当前schema文件是一个质量良好的文件。通过element定义元素判断当前元素是简单元素还是复杂元素 xml文件
?xml version1.0 encodingUTF-8 ?personsxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlnshttp:www.itzhuzhu.comxsi:schemaLocationhttp:www.itzhuzhu.com persons.xsd
person id001name张三/nameage23/age/person
/personsxsd约束文件
?xml version1.0 encodingUTF-8 ?
schema xmlnshttp://www.w3.org/2001/XMLSchematargetNamespacehttp:www.itzhuzhu.comelementFormDefaultqualified
!--定义persons复杂元素--element namepersonscomplexTypesequence!--定义person复杂元素--element namepersoncomplexTypesequence!--定义name和age简单元素--element namename typestring/elementelement nameage typestring/element/sequence!--定义属性required( 必须的)/optional( 可选的)--attribute nameid typestring userequired/attribute/complexType/element/sequence/complexType/element
/schema