• XML--概念、约束、解析


    概念

    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约束(DTDschema),

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

    DTD约束

    约束实现方法:

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

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

     

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

    步骤3:完成xml内容编写

    文档声明

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

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

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

     

    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();
            }
        }
    
    }
  • 相关阅读:
    java基础知识要点总结之几个重要关键字(关于static、this、final、)
    网上大篇幅的坑人的struts2入门案例
    oc4j(oracle container for j2EE)使用笔记一
    清空数据库中某个表的两种操作
    MyEclipse下将应用部署到tomcat严重: Error initializing endpoint java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
    jsp----错误页设置
    jsp设置MIME类型
    jsp输出显示表格
    jsp输出方式
    Linux操作
  • 原文地址:https://www.cnblogs.com/dk2557/p/9596389.html
Copyright © 2020-2023  润新知