XML(Extendsible markup language可扩展的标记语言)
1、XML:其实就是一个后缀名为.xml的文件
2、XML作用:
可以用来保存数据;可以用来做配置文件;做数据的传载体
3、XML文档声明:
<?xml version="1.0" encoding="gbk" standalone="no" ?>
version:解析xml时,使用什么版本的解析器
encoding:解析中文使用的编码方式
standalone:no---该文档或依赖关联其他文档;yes---是一个独立文档
4、XML元素命名规则:
名称可以包含数字、字母或者其他字符;不能以数字或者标点符号开始;名称不能以字符xml(无论大小写)开始;名称不可以包含空格
建议:命名尽量简单,做到见名知意
5、XML元素分类(简单元素&复杂元素):
简单元素:里面包含了普通的文字
复杂元素:元素中可以进行嵌套
6、CDATA
1)非法字符:
XML中的"<"和"&"是非法字符,省略号、大于号等是合法的,但是替换为实体引用是一个好习惯
< <
& &
2)如果某段字符串里面有过多的字符, 并且里面包含了类似标签或者关键字的这种文字,不想让xml的解析器去解析。 那么可以使用CDATA
<des><![CDATA[<a href="http://www.baidu.com">我爱中国</a>]]></des>
7、XML解析:
1)解析方式:有很多种,但是常用的有两种-------DOM、SAX
2)针对这两种解析方式很多公司和组织给了对应的解析API,常用的有以下几种:
jaxp sun公司,使用比较繁琐
jdom
dom4j 使用比较广泛
3)dom4j基本用法
element.element("stu") : 返回该元素下的第一个stu元素
element.elements(); 返回该元素下的所有子元素。
1 try { 2 //1. 创建sax读取对象 3 SAXReader reader = new SAXReader(); 4 //2. 指定解析的xml源 5 Document document = reader.read(new File("src/xml/stus.xml")); 6 //3. 得到元素、 7 //得到根元素 8 Element rootElement= document.getRootElement(); 9 //获取根元素下面的子元素 age 10 //rootElement.element("age") 11 //获取根元素下面的所有子元素 。 stu元素 12 List<Element> elements = rootElement.elements(); 13 //遍历所有的stu元素 14 for (Element element : elements) { 15 //获取stu元素下面的name元素 16 String name = element.element("name").getText(); 17 String age = element.element("age").getText(); 18 String address = lement.element("address").getText(); System.out.println("name="+name+"==age+"+age+"==address="+address); 19 } 20 } catch (Exception e) { 21 e.printStackTrace(); 22 }
4)dom4j支持Xpath语法:
xpath其实是xml的路径语言,支持我们在解析xml的时候,能够快速的定位到具体的某一个元素。
使用步骤:
a. 添加jar包依赖 jaxen-1.1-beta-6.jar
b. 在查找指定节点的时候,根据XPath语法规则来查找(查看XPath官方文档)
c. 后续的代码与以前的解析代码一样。
1 //获取的是第一个 只返回一个。 2 Element nameElement = (Element) rootElement.selectSingleNode("//name"); 3 System.out.println(nameElement.getText()); 4 //获取文档里面的所有name元素 5 List<Element> list = rootElement.selectNodes("//name"); 6 for (Element element : list) { 7 System.out.println(element.getText()); 8 }
5)XML约束:(DTD、Schema)
DTD:是早期出现的,可读性比较差
a:引入网络DTD
<!DOCTYPE stus PUBLIC "//UNKNOWN/" "unknown.dtd"> 文档类型 根标签名字 网络上的dtd dtd的名称 dtd的路径
b:引入本地DTD
<!DOCTYPE stus SYSTEM "stus.dtd"> 根标签名字 引入本地的DTD dtd的位置
c:直接在XML文件中定义约束
<!DOCTYPE 根标签 [ <!ELEMENT stus (stu)> <!ELEMENT stu (name,age)> <!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)> ]>
<!ELEMENT stu (name , age)> 按照顺序来
<!ELEMENT stu (name | age)> 两个中只能包含一个子元素
Schema:就是一个XML,遵循XML语法,解析方便。但是约束的文本内容比DTD多,所以并没有替代DTD
a:约束文档
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.itheima.com/teacher" elementFormDefault="qualified">
xmlns : xml namespace targetNamespace : 目标名称空间 。 下面定义的那些元素都与这个名称空间绑定上。 elementFormDefault : 元素的格式化情况
b:示例
<?xml version="1.0" encoding="UTF-8"?> <teachers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.org.com/teacher" xsi:schemaLocation="http://www.org.com/teacher teacher.xsd" >
xmlns:xsi : 这里必须是这样的写法,也就是这个值已经固定了。 xmlns : 这里是名称空间,也固定了,写的是schema里面的顶部目标名称空间 xsi:schemaLocation : 有两段: 前半段是名称空间,也是目标空间的值 , 后面是约束文档的路径。
c:名称空间的作用
如果一个xml文件引入DTD约束,则只能引入一个。
但是Schema约束因为名称空间的使用可以引入多个:
<aa:name></aa:name>
<bb:name></bb:name>
Tomcat:
1、Web应用需要服务器的支持,常见的服务器有:
Tomcat apache
WebLogic BEA
Websphere IBM
IIS 微软
2、安装:
1) 直接解压 ,然后找到bin/startup.bat
2)可以安装
启动之后,如果能够正常看到黑窗口,表明已经成功安装。 为了确保万无一失, 最好在浏览器的地址栏上输入 : http://localhost:8080 , 如果有看到内容 就表明成功了。
3) 如果双击了startup.bat, 看到一闪而过的情形,一般都是 JDK的环境变量没有配置。
3、目录介绍:
bin:包含了一些jar , bat文件 。 startup.bat
conf:tomcat的配置 server.xml web.xml
logs:运行的日志文件
temp:临时文件
webapps:发布到tomcat服务器上的项目,就存放在这个目录。
work:class存放处
4、发布一个文件到tomcat:
需求:让其他电脑可以访问我电脑的xml文件
1)拷贝这个文件到webapps/ROOT底下, 在浏览器里面访问:http://localhost:8080/stu.xml
2)在webaps下面新建一个文件夹xml , 然后拷贝文件放置到这个文件夹中
http://localhost:8080/xml/stu.xml
http://localhost:8080 : 其实对应的是到webapps/root
http://localhost:8080/xml/ : 对应是 webapps/xml
3)使用IP地址访问:
http://192.168.11.11:8080/xml/stu.xml