Extensible Markup Language 可扩展标记语言java
功能:配置文件,在网络中传输node
基本语法 1.xml文档的后缀名.xml 2.xml第一行必须定义为文档声明 3.xml文档中有且仅有一个跟标签 4.属性值使用引号引发来 5.标签必须正确关闭 6.xml标签名称区分大小写
<?xml version='1.0' ?> <users> <user id='1'> <name>张三</name> <age>23</age> <gender>male</gender> </user> <user id='2'> <name>李四</name> <age>24</age> <gender>female</gender> <code> <!--CDATA区的code会原样展现--> <![CDATA[if(a<b&&a>c){}]]> </code> </user> </users>
dtd约束web
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE students SYSTEM "student.dtd"> <students> <student number="s001"> <name>张三</name> <age>23</age> <sex>男</sex> </student> <student number="s002"> <name>李四</name> <age>24</age> <sex>女</sex> </student> </students>
<?xml version="1.0" encoding="UTF-8" ?> <!-- 1.填写xml文档的根元素 2.引入xsi前缀. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3.引入xsd文件命名空间. xsi:schemaLocation="http://www.itcast.cn/xml student.xsd" 4.为每个xsd约束声明一个前缀,做为标识 xmlns="http://www.itcast.cn/xml" --> <students xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.itcast.cn/xml" xsi:schemaLocation="http://www.itcast.cn/xml student.xsd" > <student number="heima_0001"> <name>tom</name> <age>18</age> <sex>male</sex> </student> </students>
<?xml version="1.0"?> <xsd:schema xmlns="http://www.itcast.cn/xml" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.itcast.cn/xml" elementFormDefault="qualified"> <xsd:element name="students" type="studentsType"/> <xsd:complexType name="studentsType"> <xsd:sequence> <xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="studentType"> <xsd:sequence> <xsd:element name="name" type="xsd:string"/> <xsd:element name="age" type="ageType" /> <xsd:element name="sex" type="sexType" /> </xsd:sequence> <xsd:attribute name="number" type="numberType" use="required"/> </xsd:complexType> <xsd:simpleType name="sexType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="male"/> <xsd:enumeration value="female"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="ageType"> <xsd:restriction base="xsd:integer"> <xsd:minInclusive value="0"/> <xsd:maxInclusive value="256"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="numberType"> <xsd:restriction base="xsd:string"> <xsd:pattern value="heima_\d{4}"/> </xsd:restriction> </xsd:simpleType> </xsd:schema>
操做xml文档,将文档中的数据读取到内存中tomcat
解析方式:服务器
1.DOM:将标记语言文档一次性加载进内存,在内存中造成一个dom数网络
2.SAX:逐行读取,基于事件驱动的app
常看法析器:dom
1.JAXP 2.DOM4J 3.Jsoup。webapp
Jsoup使用步骤ui
1.导入jar包
2.获取Document对象
3.获取对应的标签
4.获取数据
<?xml version="1.0" encoding="UTF-8" ?> <students> <student number="s001"> <name id="a">张三</name> <age>23</age> <sex>男</sex> </student> <student number="s002"> <name>李四</name> <age>24</age> <sex>女</sex> </student> </students>
package data; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.File; import java.net.URL; public class jsoupDemo1 { public static void main(String[] args) { //获取student.xml的path //能够使用字节码对象来获取类加载器 Class ac1ass = jsoupDemo1.class; ClassLoader aclassLoader=ac1ass.getClassLoader(); //获取资源位置 URL aurl=aclassLoader.getResource("student.xml"); //获取字符串表示形式的路径 String path = aurl.getPath(); //解析xml文档,加载文档进内存,获取dom树 //parse方法须要一个File对象和字符集做为参数 //parde返回的是一个Document对象 try { Document aDocument=Jsoup.parse(new File(path),"utf-8"); //获取元素对象 Elements aElement=aDocument.getElementsByTag("name"); System.out.println(aElement.size()); Element element=aElement.get(0); System.out.println(element); System.out.println("----------------"); //经过标签属性名来获取元素 Elements aElements1 = aDocument.getElementsByAttribute("id"); System.out.println(aElements1); } catch (Exception e) { e.printStackTrace(); } } }
快捷查询方式:
1.selector,选择器
2.xpath;
选择器的演示
package data; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import java.io.File; import java.net.URL; public class jsoupDemo1 { public static void main(String[] args) { //获取student.xml的path //能够使用字节码对象来获取类加载器 Class ac1ass = jsoupDemo1.class; ClassLoader aclassLoader=ac1ass.getClassLoader(); //获取资源位置 URL aurl=aclassLoader.getResource("student.xml"); //获取字符串表示形式的路径 String path = aurl.getPath(); //解析xml文档,加载文档进内存,获取dom树 //parse方法须要一个File对象和字符集做为参数 //parde返回的是一个Document对象 try { Document aDocument=Jsoup.parse(new File(path),"utf-8"); //查询name标签 Elements elements = aDocument.select("name"); System.out.println(elements+"经过标签查找"); System.out.println("====================================="); //查询属性id值为a Elements elements1 =aDocument.select("#a"); System.out.println(elements1+"经过属性值a查找"); System.out.println("========================================="); //获取student标签下的属性值为s002下的age Elements elements2 = aDocument.select("student[number=s002]>age"); System.out.println(elements2); System.out.println("==========================================="); //只要纯文本 String s1 = elements2.text(); System.out.println(s1); } catch (Exception e) { e.printStackTrace(); } } }
XPath的演示(须要额外导入jar包)
package data; import cn.wanghaomiao.xpath.exception.XpathSyntaxErrorException; import cn.wanghaomiao.xpath.model.JXDocument; import cn.wanghaomiao.xpath.model.JXNode; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import java.io.File; import java.io.IOException; import java.util.List; public class jsoupDemo4 { public static void main(String[] args) throws IOException { String path = jsoupDemo4.class.getClassLoader().getResource("student.xml").getPath(); Document document = Jsoup.parse(new File(path) ,"utf-8"); //建立JXDocument对象 JXDocument jxDocument = new JXDocument(document); //结合XPath语法查询 //查询全部student标签 try { List<JXNode> jxNodes = jxDocument.selN("//student"); for(JXNode jxNode:jxNodes){ System.out.println(jxNode); } System.out.println("==========================="); //查询student标签下带有属性的name标签 List<JXNode> jxNodes1 = jxDocument.selN("//student/name[@id]"); for(JXNode jxNode:jxNodes1){ System.out.println(jxNode); } } catch (XpathSyntaxErrorException e) { e.printStackTrace(); } } }
web服务器软件
配置
部署项目的方式
第一种方式.直接将项目放在webapps目录下
第二种方式:配置conf/server.xml文件,在
标签中配置 第三种方式:在conf\catalina\localhost建立任意名称的xml文件,在文件中编写
虚拟的目录
第三种部署项目方式演示