2018-08-31XML文件+DTD约束文件+Schema约束文件
? Java里面两种配置文件:XML和Properties文件! ? 只要是A标签这种没有办法指定提交方式(GET/POST)的标签,都是GET方式提交! ? Servlet:请求-->响应! ? XML指可扩展标记语言,XML被设计用来传输和存储数据! ? Servlet执行机制: XML个称为Extensible Markup Language,意思是可扩展的标记语言!XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的! ? XML文档声明 ? 1;文档声明必须为<?xml开头,以?>结束! 2;文档声明必须从文档的0行0列位置开始! 3;文档声明只有属性! versioin:指定XML文档版本,必须属性,不会选择1.1,只会选择1.0! encoding:指定当前文档的编码,可选属性,默认值是:utf-8! ? 元素Element: 1;元素是XML文档中最重要的组成部分! 2;普通元素的结构开始标签,元素体,结束标签组成! 3:元素体:元素体可以是元素,也可以是文本! 4:空元素:空元素只有开始标签,而没有结束标签,但元素必须自己闭介! 5:元素命名: 区分大小写! 不能使用空格,不能使用冒号! 不建议以XML,xml,Xml开头! 6:格式化良好的XML文档,必须只有一个根元素! 属性 1;属性是元素的一部分,它必须出现在元素的开始标签中! 2;属性的定义格式:属性名=属性值,其中属性值必须使用单引或双引! 3;一个元素可以有0~N个属性,但一个元素中不能出现同名属性! 4;属性名不能使用空格,冒号等特殊字符,且必须以字母开头! ? 注释: XML的注释与HTML相同,即以<!--开始,以-->结束!注释内容会被XML解析器忽略! ? 转义字符 XML中的转义字符与HTML一样(HTML实体)! 因为很多符号己经被XML文档结构所使用,所以在元素体或属性值中想使用这些符号就必须使用转义字符! ? CDATA区 ? 当大量的转义字符出现在XML文档中时,会使XML文档的可读性大幅度降低! 此时可以使用CDATA! ? 1:内部DTD,在XML文档内部嵌入DTD,只对当前XML有效!
2:外部DTD——本地DTD,DTD文档在本地系统上,公司内部自己项目使用! 3:外部DTD——公共DTD,DTD文档在网络上,一般都有框架提供! XML文件中的特殊符号释义:
?
? DTD和Schema约束: Schema约束更加规范化一点! ? Schema优点: Schema是新的XML文档约束: Schema要比DTD强大很多,是DTD替代者; Schema本身也是XML文档,但Schema文档的扩展名为xsd,而不是xml . Schema功能更强大,数据类型更完善 Schema支持名称空间 ? DTD约束文件: <servlet> <!-- 不可以使用空格和冒号 --> <!-- 3 --> <servlet-name>HelloServlet</servlet-name> <!-- 4是包名加类名文件 --> <servlet-class>com.oracle.helloservlet</servlet-class> </servlet> <servlet-mapping> <!-- 2和3名字必须相同 --> <servlet-name>HelloServlet</servlet-name> <!-- 1页面进来先找URL地址,必须以/开头 --> <url-pattern>/hello</url-pattern> </servlet-mapping> ? Schema约束文件规范: <!-- Schema约束,需要手动加入结束标签 --> <web-app xmlns="http://www.example.org/web-app_2_5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd" version="2.5"> </web-app> ? 解析方式和解析器: 1;DOM:要求解析器把整个XML文档装载到内存,并解析成一个Document对象! ①???? 优点:元素与元素之间保留结构关系,故可以进行增删改查操作! ②???? 缺点:XML文档过大,可能出现内存溢出显现! 2;SAX:是一种速度更快,更有效的方法!它逐行扫描文档,一边扫描一边解析!并以事件,驱动的方式进行具体解析,每执行一行,都将触发对应的事件! ①??? 优点:处理速度快,可以处理大文件 ②??? 缺点:只能读,逐行后将释放资源! 3;PULL:Android内置的XML解析方式,类似SAX! ? 解析器释义: ①??? 解析器:就是根据不同的解析方式提供的具体实现,有的解析器操作过于繁琐,为了方便开发人员,有提供易于操作的解析开发包! ①??? 常见的解析开发包: ① ?JAXP:Sun公司提供支持DOM和SAX开发包! ② ?JDom:Dom4J兄弟! ③ ?JSoup:一种处理HTML特定解析开发包! ④ ?Dom4J:比较常用的解析开发包,Hibernate底层采用! ? 原理示意图: 解析器使用如下: 步骤: 1.获取解析器 2.获得document文档对象 3.获取根元素 4.获取根元素下的子元素 5.遍历子元素 6.判断元素名称为servlet的元素 7.获取servlet-name元素 8.获取servlet-class元素 ? 作业代码: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE web-app SYSTEM "web-app_2_3.dtd"> <web-app> <servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>com.oracle.homework.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/HelloServlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://www.example.org/web-app_2_5" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/web-app_2_5 web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>TestServlet</servlet-name> <servlet-class>com.oracle.homework.TestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>TestServlet</servlet-name> <url-pattern>/TestServlet</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app> package com.oracle.homework; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class TestQues3 { public static void main(String[] args) throws DocumentException { //获取解析器: SAXReader saxr=new SAXReader(); //获取Document文档: Document doc=saxr.read("src/com/oracle/homework/WebXSD.xml"); //获取文档中的根标签,拿到web-app: Element rootEle=doc.getRootElement(); //获取跟标签的子标签放进List集合: List<Element> childEle=rootEle.elements(); //遍历该集合: for(Element ele:childEle){ if("servlet".equals(ele.getName())){ System.out.println(ele.element("servlet-name").getName()); System.out.println(ele.element("servlet-class").getName()); }else if("servlet-mapping".equals(ele.getName())){ System.out.println(ele.element("servlet-name").getName()); System.out.println(ele.element("url-pattern").getName()); } System.out.println(ele.getName()); } } } //定义接口: package com.oracle.homework; public interface MyServlet { public void init(); public void service(); public void distory(); } //实现以上接口: package com.oracle.homework; public class MyServletImp implements MyServlet { @Override public void init() { System.out.println("这是Init"); } @Override public void service() { System.out.println("这是Service"); } @Override public void distory() { System.out.println("这是Distory"); } } //进行不可描述的操作: package com.oracle.homework; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class TestMyServlet { public static void main(String[] args) throws DocumentException,ClassNotFoundException,InstantiationException,IllegalAccessException { //获取解析器: SAXReader saxr=new SAXReader(); //获取Document文档: Document doc=saxr.read("src/com/oracle/homework/MyServletXSD.xml"); //获取根标签web-app: Element rootEle=doc.getRootElement(); //获取rootEle的子元素并放进List集合: List<Element> childEle=rootEle.elements(); //定义String接收,并遍历赋值: String getPackClass=null; for(Element ele:childEle){ if("servlet".equals(ele.getName())){ getPackClass=ele.element("servlet-class").getText(); } } //获取字节码文件对象: Class cla=Class.forName(getPackClass); //获取Object对象: MyServletImp myser=(MyServletImp)cla.newInstance(); myser.init(); myser.service(); myser.distory(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 关于solr schema.xml 和solrconfig.xml的解释
- PostgreSQL的配置文件
- swift – 在防范中创建非可选项以测试保护条件
- 在FlashDevelop中为Halo / Flex 4设置compiler.theme选项
- ajax转递数组,springmvc后端接收
- c# – Windows Phone 8的Http文章
- reactos 编译,安装篇
- 是一个结构{…};一个类型或一个未命名的变量?
- xml libxml2-xml 解析 http://sblig.iteye.com/blog/814323
- ruby-on-rails – 使用Rails 3管理资产(在Heroku上)(Jammit