哪里注册域名最便宜,简述搜索引擎优化,不错的网站建设,wordpress允许用户修改文章1、XML文件介绍
配置文件#xff1a;用来保存设置的一些东西。
拿IDEA来举例#xff0c;比如设置的背景图片#xff0c;字体信息#xff0c;字号信息和主题信息等等。
#xff08;1#xff09;以前是用txt保存的#xff0c;没有任何优点#xff0c;而且不利于阅读用来保存设置的一些东西。
拿IDEA来举例比如设置的背景图片字体信息字号信息和主题信息等等。
1以前是用txt保存的没有任何优点而且不利于阅读因为只保存了值而值所代表的含义却不清楚。 2后面又提出了properties文件是以键值对的形式存储数据的拿同一个信息来说假如有多个用户的只需要存储却只能用一个键值对来进行存储无法为同一个信息配置多个键值对。 3所以现在来学习xml文件。xml文件可解决这个问题。
xml是可扩展的标记语言那什么是可扩展什么是标记语言
标记就是标签。可扩展就是可以自定义标签。
下面是一个例子可以很清楚地看到多个用户的不同信息。 2、XML文件基本语法
1XML文件的创建
文件后缀名为.xml注意是小写的。 2XML文件的文档声明
第一行必须是文档声明这个不需要去背只需输入一个IDEA就会自动进行提示。
versionXML默认的版本号该属性是必须存在的。
encoding本XML文件的编码。
?xml version1.0 encodingUTF-8 ? 还有一点文档声明必须放在第一行顶格写下面这两种不放在第一行和不顶格写都是错的。 3XML文件的标签规则
①标签必须成对出现比如下面的student标签且根标签只能有一个。
②也有一些特殊的单标签比如br/。
③标签里面还可以有属性以及属性的值。
④标签中的文本内容比如张三就是name标签的文本内容。 4XML文件的注释信息!- 注释内容 --
不用记只需要选中内容然后用IDEA的快捷键就可以了crtlshift。
5XML文件中的特俗符号
由于平常用来表示大于、小于等等的一些符号在XML文件中是用来表示标签的开始和结束的所以提出了别的符号用来表示大于、小于这些。 6XML文件中的CDATA区
格式![CDATA[内容]]
这种格式下的内容都会当成最原始的符号不会有xml文件中的特殊意义比如就是小于的意思。
7代码书写要求
从左到右依次书写当写完开始标签的时会自动把结束标签补上。 3、XML文件的约束文档
由于XML文件可以自定义标签如果随意定义会导致XML文件在解析时可能会出现问题。
为了避免这种情况的出现就提出了一系列要求强制程序员必须按照要求进行规定进行书写。
我们不用掌握约束文档怎么写只需要根据给出的约束文档知道如何去编写XML文件就可以了。
约束分为两类DTD和scheme。
1如何利用DTD约束文档编写一个符合要求的XML文件 我们需要掌握的有3点
①约束文档的格式为dtd。
②如何引入本地的dtd文件。 ③如何根据约束书写XML文件。
2如何利用scheme约束文档编写一个符合要求的XML文件
由于DTD约束文档没办法约束数据类型所以提出了scheme约束文档。
1scheme约束文档的格式
scheme约束文档本身就是一个XML文件也被其他的scheme约束文档所约束。 这是一个scheme约束文档的内容其中需要学习的就是红色方框中的内容 2如何引入scheme约束文档
只需这一行就可以。 上面虽然讲了这么多但真正需要掌握的就是把scheme约束文档复制到XML文件的目录下然后输入之后根据提示直接使用就可以了都不需要写第二步。
4、XML文件的解析
解析XML文件就是读取文件中的数据。
解析的方式Dom4j。
1Dom4j的解析方式
这种方式是读取整个XML文件之后按照树形结构存储大概就是下面图示的样子。以及需要掌握Doucument、Element、Attribute和Text4个对象的含义。 2如何使用Dom4j解析XML文件
首先要想使用dom4j就要先下载包网址DOM4J
还有一点就是从XML文件中解析完数据之后可以封装到对象中要不然数据都是一个个零散的。
①比如有这样一个XML文件
?xml version1.0 encodingUTF-8 ?
!--注释的内容--
!--本xml文件用来描述多个学生信息--
students!--第一个学生信息--student id1name张三/nameage23/age/student!--第二个学生信息--student id2name李四/nameage24/age/student/students
②Student类
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 };}
}
③利用dom4j去解析XML文件
1.获取一个解析器对象
2.利用解析器把xml文件加载到内存中,并返回一个文档对象
3.获取到根标签
4.通过根标签来获取student标签
elements()可以获取调用者所有的子标签并把这些子标签放到一个集合中返回。 elements(标签名)可以获取调用者指定的所有子标签并把这些子标签放到一个集合中并返回。
/*** 利用dom4j解析xml文件*/
public class XmlParse {public static void main(String[] args) throws DocumentException {//1.获取一个解析器对象SAXReader saxReader new SAXReader();//2.利用解析器把xml文件加载到内存中,并返回一个文档对象Document document saxReader.read(new File(myxml\\xml\\student.xml));//3.获取到根标签Element rootElement document.getRootElement();//4.通过根标签来获取student标签//elements():可以获取调用者所有的子标签.会把这些子标签放到一个集合中返回.//elements(标签名):可以获取调用者所有的指定的子标签,会把这些子标签放到一个集合中并返回//List list rootElement.elements();ListElement studentElements rootElement.elements(student);//System.out.println(list.size());//用来装学生对象ArrayListStudent list new ArrayList();//5.遍历集合,得到每一个student标签for (Element element : studentElements) {//element依次表示每一个student标签//获取id这个属性Attribute attribute element.attribute(id);//获取id的属性值String id attribute.getValue();//获取name标签//element(标签名):获取调用者指定的子标签Element nameElement element.element(name);//获取这个标签的标签体内容String name nameElement.getText();//获取age标签Element ageElement element.element(age);//获取age标签的标签体内容String age ageElement.getText();// System.out.println(id);
// System.out.println(name);
// System.out.println(age);Student s new Student(id,name,Integer.parseInt(age));list.add(s);}//遍历操作for (Student student : list) {System.out.println(student);}}
}
3后面又提出了Xpath可以根据如何使用Xpath解析XML文件。
Xpath底层依赖dom4j所以如果要使用Xpath的话记得也要导dom4j的包。
有4种解析方式绝对路径检索、相对路径检索、全文检索以及属性检索。
以及提供两个检索方法
①selectNodes(路径)查询满足路径的所有
②selectSingleNodes(路径)查询满足路径的一个如果同时有多个满足则返回第一个。
关于路径有4种
首先先来介绍一下各个符号的含义/表示单级路径//表示多级路径表示属性。
1.绝对路径从根标签开始。
2.相对路径相对于当前标签的路径而.就表示当前标签的路径。
3.全文检索
①//name在整个xml文件种查找name这个标签
②//person/name和//person//name两个的区别
//person/name是查找到person标签以后再找person的子标签是name的。
//person//name无论name是子标签还是孙标签都可以。
4.属性检索
①//属性名比如//id
②//元素[属性名]查找带有属性名的标签
③//元素[属性名 值]查找带有属性为某个值的标签