首页 > 编程 > Java > 正文

Java ModelI和ModelII DTD文件解析 DOM4J基础应用

2019-11-06 06:55:44
字体:
来源:转载
供稿:网友

1.Model I模式开发

    1.Model I模式开发Web应用时,分为两种情况:

        1.纯jsp技术方式开发        2.JSP+javaBean方式开发

    2.Model I模式的不足:

        1.JSP页面中嵌入大量Java代码,可读性差。        2.大量代码在JSP中难以复用。        3.后期维护及扩展的难度大。

2.Model II模式与MVC设计模式

    1.Model II模式体现了基于MVC的设计模式,简单来说,Model II模式就是将数据显示、流程控制和业务逻辑处理分离,使之相互独立。

    

    2.MVC设计模式

        1.MVC设计模式由3个部分组成            Model:模型,主要用于数据和业务的处理。            View:视图,用于数据的显示。            Controller:控制器,用于进行流程控制。        2.MVC设计模式的特点            一个模型可以对应多个视图。            显示与逻辑控制的分离。            分层控制,减低了代码间的偶合。            

3.DTD的概念和作用

    1.DTD简介

        DTD是Document Type Definition的缩写,即文档类型的定义。        

    2.DTD的作用如下

        1.DTD使每个xml文件可以携带一个自身格式的描述。        2.DTD使不同组织的人可以使用一个通用DTD来交换数据。        3.DTD使应用程序可以使用一个标准DTD校验从外部接收的XML数据是否有效。    

    3.DTD的声明

        语法:            <!DOCTYPE 根元素 [定义内容]>                    示例:           
<?xml version="1.0"?>            <!DOCTYPE poem[                <!ELEMENT poem (author,title,content) >                <!ELEMENT author (#PCDATA) >                <!ELEMENT title (#PCDATA)  >                <!ELEMENT content (#PCDATA) >            ]>            <poem>                <author>王维</author>                <title>鹿踩</title>                <content>空山不见人,但闻人语声。返景入深林,复照青苔上。</content>            </poem>                    将DTD嵌入XML文件中用于验证描述诗集的XML,称为内部DTD文档。            

    4.使用外部DTD验证XML

        存储DTD的文件一般以.dtd作为文件的扩展名。        语法:            <!DOCTYPE 根元素 SYSTEM "DTD文件路径">            DOCTYPE、SYSTEM是关键字。                        示例:         
  <?xml version="1.0" encoding="utf-8"?>            <!DOCTYPE poems SYSTEM "poems.dtd">            <poems createYear="2011">                <poem>                    <title>春晓</title>                    <author>孟浩然</author>                    <year>732</year>                    <content>春眠不觉晓.....</content>                </poem>            </poems>            

    5.DTD元素

        1.DTD元素定义语法:           
<!ELEMENT NAME CONTENT>                ELEMENT是关键字                NAME是元素名称                CONTENT是元素类型        常用的元素类型如下:            #PCDATA,可以包含任何字符数据,但是不能在其中包含任何子元素,例如:            
<!ELEMENT title (#PCDATA)>            纯元素类型,只包含子元素,并且这些子元素外没有文本,例如:            
<!ELEMENT poems (poem*) >                    2.DTD元素中某些符号的用途        符号    用途                                                 示例                                                          示例说明        ()        用来给元素分组                               (古龙|金庸|梁羽生),(王朔|余杰),毛毛       表示分为三组        |        在列出的对象中选择一个                  (男人|女人)                                              表示"男人"或者"女人"必须出现,并且两者至少选一        ,        对象必须按指定的顺序出现              (西瓜,苹果,香蕉)                                      表示"西瓜""苹果""香蕉"必须出现,并且按这个顺序出现        *        该对象允许出现0到多次                   (爱好*)                                                     表示"爱好"可以出现0次到多次        ?        该对象可以出现0次到1次                (菜鸟?)                                                     表示"菜鸟"可以出现0次到1次        +        该对象最少出现1次到多次              (成员+)                                                     表示"成员"必须出现,而且可以出现多次        

    6.DTD属性

        1.DTD属性声明语法如下:            <!ATTLIST 元素名称 属性名称 属性类型 属性默认值>                2.DTD元素中属性类型的描述如下:            属性类型        说明            CDATA             表示字符数据            ID                表示唯一ID            IDREF            表示为另一个元素的id            IDREFS            表示其他id的列表            ENTITY            表示一个实体            ENTITLES        表示一个实体列表                3.DTD元素中属性值的描述            值                说明            #REQUIRED        属性值是必须的            #IMPLIED        属性值不是必须的            #FIXED            属性值是固定的            

4.XML文档解析

    1.DOM4J概述

        DOM4J是一个易用的,开源的库,可以实现对XML文档的解析。    

    2.使用DOM4J操作XML数据

        1.Document对象相关         
  SAXReader reader = new SAXReader();            Document document = reader.read(new File("input.xml"));                    2.节点相关            1.获取文档的根元素                
Element rootElm = document.getRootElement();            2.取得某节点的单个子节点               
 Element memberElm = root.element("member");  //"member"是节点名            3.取得节点的文字               
 String text = memberElm.getText();            4.取得某节点下名为"member"的所有子节点并遍历               
 List nodes = rootElm.elements("member");                for(Iterator it = nodes.iterator();it.hasNext();){                    Element elm = (Element)it.next();                }            5.对某节点下的所有子节点进行遍历              
  for(Iterator it = root.elementIterator;it.hasNext();){                    Element element = (Element)it.next();                }            6.在某节点下添加子节点             
   Element ageElm = newMemberElm.addElement("age");            7.设置节点文字              
  ageElm.setText("29");            8.删除某节点               
 parentElm.remove(childElm); //childElm是待删除的节点,parentElm是其父节点。            9.添加一个CDATA节点                
Element contentElm = infoElm,addElement("content");                contentElm.addCDATA(diary.getContent());                contentElm.getText();  //特别说明:获取街道的CDATA值与获取节点的值是用一个方法                contentElm.clearContent();//清除节点中的内容,CDATA亦可        

        3.属性相关

            1.取得某节点下的某属性             
  Element root = document.getRootElement();                Attribute attribute = root.attribute("size"); //属性名name            2.获取属性的文字             
   String text = attribute.getText();            3.遍历某节点的所有属性               
 Element root = document.getRootElement();                for(Iterator it = root.attributeIterator();it.hasNext()){                    Attribute attribute = (Attribute)it.next();                    String text = attribute.getText();                    System.out.PRintln(text);                }            4.设置某节点的属性和文字               
 newMemberElm.addAttribute("name","sitinspring");            5.设置属性的文字                
Attribute attribute = root.attribute("name");                attribute.setText("sitinspring");                                               
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表