笔记-JavaWeb学习之旅9
程序员文章站
2022-03-22 19:02:44
XML Extensible Markup Language 可扩展标记语言 功能:配置文件,在网络中传输 约束 :规定xml文档的书写规则 dtd约束: dtd约束 引入schema文档 xml_解析 操作xml文档,将文档中的数据读取到内存中 解析方式: 1.DOM:将标记语言文档一次性加载进内 ......
xml
extensible markup language 可扩展标记语言
功能:配置文件,在网络中传输
基本语法 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>
约束 :规定xml文档的书写规则
dtd约束:
dtd约束
<?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>
引入schema文档
<?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_解析
操作xml文档,将文档中的数据读取到内存中
解析方式:
1.dom:将标记语言文档一次性加载进内存,在内存中形成一个dom数
2.sax:逐行读取,基于事件驱动的
常见解析器:
1.jaxp 2.dom4j 3.jsoup。
jsoup使用步骤
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(); } } }
tomcat
web服务器软件
配置
部署项目的方式
第一种方式.直接将项目放在webapps目录下
第二种方式:配置conf/server.xml文件,在
标签中配置
第三种方式:在conf\catalina\localhost创建任意名称的xml文件,在文件中编写
虚拟的目录
第三种部署项目方式演示