概念

XML:可扩展标记语言

HTML:超文本标记语言

两者的区别:

1、语法结构类似,单语法要求不同

  • HTML不区分大小写,XML严格区分大小写
  • 在HTML中,有时不严格,如果上下文清楚地显示出段落或者列表键在何处结尾,那么你可以省略</p>或者</li>之类的结束标记。在XML中,是严格的树状结构,绝对不能省略掉结束标记。
  • 在XML文档中,空白部分不会被解析器自动删除;但是html是过滤掉空格的。

2、标记不同:

  • HTML的标记都是预编译的;而XML标签是免费的、自定义的、可扩展的。

3、作用区别:

  • XML 不是HTML的替代品,xml和html是两种不同用途的语言。 XML 不是要替换 HTML;实际上XML 可以视作对 HTML 的补充。
  • HTML是用来显示数据的;XML 是用来描述数据、存放数据的,所以可以作为持久化的介质

注意:

1.文档声明必须为<?xml开头,以?>结束;

2.文档声明必须从文档的0行0列位置开始

3. CDATA区

  • 在CDATA段中出现的“<”、“>’,、“””、“‘”、“&”,都无需使用转义字符。这可以提高xml文档的可读性。
  • 在CDATA段中不能包含“]]>”,即CDATA段的结束定界符。
<![CDATA[
任意内容
]]>

约束

为了限定XML内容,我们需要使用xml约束(DTD或schema),

规定XML文档中元素的名称,子元素的名称及顺序,元素的属性等。

DTD约束

约束实现方法:

步骤1:创建web.xml文档,并将“web-app_ 2_ 3.dtd"拷贝相同目录下。

步骤2:从DTD文档开始处,拷贝需要的“文档声明”

将文档声明复制到xml文件下

步骤3:完成xml内容编写

文档声明

1、内部DTD,在XML文档内部嵌入DTD,只对当前XML有效。

2、外部DTD——本地DTD,DTD文档在本地系统上,公司内部自己项目使用。

3、外部DTD——公共DTD,DTD文档在网络上,一般都有框架提供。

Schema约束

Schema是新的XML文档约束;要比DTD强大很多,是DTD替代者;功能更强大,数据类型更完善

实现方法:

步骤1:创建web.xml,并将"web-app_2_5.xsd"拷贝到同级目录

步骤2:从xsd文档中拷贝需要的“命名空间”

步骤3:完成xml内容编写

<?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></servlet-name>
<servlet-class></servlet-class>
</servlet>
<servlet-mapping>
<servlet-name></servlet-name>
<url-pattern></url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file></welcome-file>
<welcome-file></welcome-file>
</welcome-file-list>
</web-app>

解析(常用dom4j

xml是用来储存信息的,需要通过解析,来获得存储的信息

开发中比较常见的解析方式有三种,如下:

1、DOM:要求解析器把整个XML文档装载到内存,并解析成一个Document对象。

  a) 优点:元素与元素之间保留结构关系,故可以进行增删改查操作。

  b) 缺点:XML文档过大,可能出现内存溢出显现。

2、SAX:是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。并以事件 驱动的方式进行具体解析,每执行一行,都将触发对应的事件。(了解)

  a) 优点:处理速度快,可以处理大文件

  b) 缺点:只能读,逐行后将释放资源。

3. PULL:  Android内置的XML解析方式,类似SAX。(了解)

解析开发包的使用

如果需要使用dom4j,必须导入jar包,并Bulid Path。(放在工程目录下)

解析步骤:

例:

import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test; public class TestDom4j {
@Test
public void testReadWebXML() {
try {
// 1.获取解析器
SAXReader saxReader = new SAXReader();
// 2.获得document文档对象
Document doc = saxReader.read("src/com/oracle/demo06/web.xml");
// 3.获取根元素
Element rootElement = doc.getRootElement();
// System.out.println(rootElement.getName());//获取根元素的名称
// System.out.println(rootElement.attributeValue("version"));//获取根元素中的属性值
// 4.获取根元素下的子元素
List<Element> childElements = rootElement.elements();
// 5.遍历子元素
for (Element element : childElements) {
//6.判断元素名称为servlet的元素
if ("servlet".equals(element.getName())) {
//7.获取servlet-name元素
Element servletName = element.element("servlet-name");
//8.获取servlet-class元素
Element servletClass = element.element("servlet-class");
System.out.println(servletName.getText());
System.out.println(servletClass.getText());
}
} } catch (DocumentException e) {
e.printStackTrace();
}
} }

最新文章

  1. php这是一个随机打印输出字符串的例子
  2. ORACLE实验一-三
  3. 清空表数据 mysql让主键从1开始
  4. RabbitMQ安装配置
  5. localStorage兼容ie6/7 用addBehavior 实现
  6. POJ1745Divisibility(01背包思想)
  7. C++ Namespace 详解
  8. js实现hashtable的赋值、取值、遍历
  9. JPA学习---第一节:JPA详解
  10. valgrind 生成mysqld调用图之 select now()跟踪
  11. 解决方案--java执行cmd命令ProcessBuilder--出错Exception in thread "main" java.io.IOException: Cannot run program "dir d:\": CreateProcess error=2(xjl456852原创)
  12. mysql 初始化
  13. spring源码浅析——IOC
  14. 【转】各种图(流程图,思维导图,UML,拓扑图,ER图)简介
  15. 对NumPy中dot()函数的理解
  16. DWR第六篇之文件下载
  17. .net core 使用NPOI填充Word模板导出Word
  18. Jquery 动态追加控件并获取值
  19. PEP 8 - Python代码样式指南
  20. foreman ubuntu16快速安装

热门文章

  1. QUIC/HTTP3 协议简析
  2. 【vue】---- ElementUI 实现上传Excel
  3. python 批量重命名文件
  4. 飞越面试官(一)--Java基础
  5. Linux必须要掌握的命令
  6. (私人收藏)python学习(游戏、爬虫、排序、练习题、错误总结)
  7. Golang协程池(workpool)实现
  8. css3 pointer-events(阻止hover、active、onclick等触发事件)
  9. h5手机摇一摇功能实现:基于html5重力感应DeviceMotionEvent事件监听手机摇晃
  10. 请解释ASP. NET中的web页面与隐藏类之间的关系