中软Java8月16日学习笔记之xml

XML是EXtensible Markup Language的缩写
     可扩展的标记性语言
  <Schools>
      <school  name="昌平一中">
            <class  name="java-1班" stunum="56">
                <student>  </student>
                <device>  </device>
            </class>
            <class  name="java-2班" stunum="50">
                <student>  </student>
                <device>  </device>
            </class>     
      </school>
      <school name="北京四中">
      </school>
      <school>   </school>
 </Schools>

HTML : Hyperlink make language  


XML与HTML之间的关系:
      A、 XML包含HTML                    -------???
      B、 XML是对HTML的一个补充          -------???

      HTML是在网络通信中,传递的含有展示样式的数据。这些数据由浏览器解释执行;
      XML可以应用于各行各业,甚至是任何地方
      XML的功能远远大于HTML

      XML的解析使用DOM、SAX两个接口
      HTML是有容错性的,所以它不是标准的XML,也不能使用DOM和SAX解析HTML

      XML是大小写敏感的,HTML不敏感

      小结:HTML是基于XML规范下的,在Internet上传输并展现数据的一种具体应用;
      
      


XML的重要特性:
    1. 可扩展  (每个节点或元素都可以自由的扩展)
    2. 标记性语言   
         C++ VB  JAVA等都是编译性语言
         HTML 和 XML 是不需要编译的
      
       如何执行标记性语言?
           C++等编译性语言,执行靠CPU
           JAVA等半编译语言,执行靠虚拟机的解释
           HTML等标记性语言,执行靠浏览器等进行解释
           XML也是标记性语言: 1、先约定好XML标签的含义
                               2、写解释器去解释执行相应的XML文件

    3. XML最重要的体现是数据的载体
       其它数据载体: 如数据库、文件、磁盘、光盘
       XML可以完全替代数据库,作为数据载体

     4.XML不仅是数据的载体,而且可以描述数据的格式
       XML使用DTD或者Schema后就是自描述的语言--------------------像数据库的表结构

       举例:学生表会有表机构      (姓名、年龄、性别、身高、入学成绩)
             会有多名学生的具体数据 (张三、21、男、176、620)


    5. DTD或者Schema是XML的结构描述,而且他们本身也符合XML规范

    6. XML必须要求格式良好,需要进行格式校验   (有根、成对匹配等)

    7. XML便于数据承载和数据交换。尤其是在跨平台环境下的数据交换,优势明显     ----- 主要用途

       大企业中有非常多的业务子系统,在同一个企业中,数据和业务一定会有交叉,这时就需要数据交换
       系统之间的数据交换模式:
                     1. Web Service    (数据格式是XML的,WSDL)
                     2. XML文件



XML文档中的基本信息:
    1、 声明
         <?xml version=“1.0” encoding=“GB2312”?>

    2、根元素
           
    3、子元素

    4、tag  标签项
 
    5、 节点  Node     (XML文档是树形)

    6、 attribute  元素的属性信息(按照对象的角度看)

    7、 <!-- 这是一个注释 -->

    8、 <![CDATA[ ...Anything can go here... ]]>
 



XML使用 Document Type Definition (DTD) 或者 XML Schema 描述数据

   
XML文件的解析方式:
    DOM(Document object model )  , SAX

DOM的特点: 把整个XML文档,一次性的读入内存,生成org.w3c.dom 接口 Document对象
            document对象的数据组织形式是树形
            可以使用DOM中的方法反复读取document中的内容(正序、反序)
            可以使用DOM中的方法编辑document中的元素

             缺陷:当读取大文件时,会出现很大的性能障碍


SAX:      DefaultHandler
          读取XML文件,采用事件机制  (observe模式,观察者,发布/订阅)
          void startDocument()        接收文档开始的通知
          void endDocument()           接收文档结束的通知
          void startElement(String uri, String localName, String qName, Attributes attributes)           接收元素开始的通知
          void endElement(String uri, String localName, String qName)           接收元素结束的通知。
          void characters(char[] ch, int start, int length)           接收元素中字符数据的通知


DOM解析:
    Document-->> NodeList getElementsByTagName(String tagname)
                  按文档顺序返回包含在文档中且具有给定标记名称的所有 Element 的 NodeList


     Node-->>  NodeList getChildNodes()     包含此节点的所有子节点的 NodeList。
                       if(nd.getNodeType() == Node.ELEMENT_NODE)
                        {
                    
                }

          

    org.w3c.dom 接口 Element:
            String getAttribute(String name)           通过名称获得属性值
             String getTextContent()                 此属性返回此节点及其后代的文本内容  





练习:
      用XML文件配置数据库的连接信息:dbUrl, dbDriver,username,password
      用DOM模式读取这个文件,并设置成单例模式





XML之entity:



entity翻译为"实体"。你可以预先定义一个entity,然后在一个文档中多次调用,或者在多个文档中调用同一个entity。

<!DOCTYPE copyright [
<!ENTITY copyright "Copyright 2001, Ajie. All rights reserved"
]
>

<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE copyright [
<!ENTITY copyright "Copyright 2001, Ajie. All rights reserved">
]>
<myfile>
<title>XML</title>
<author>ajie</author>
<email>ajie@aolhoo.com</email>
<date>20010115</date>
&copyright;
</myfile>

//Enity外部引用示例
myenity.dtd
<?xml version="1.0" ?>
  <!ENTITY writer "pccw.">内部entity
  <!ENTITY copyright "china">
  <!ENTITY frame SYSTEM "myentity01.xml"> 外部的entity引用myentity01.xml
外部的一个myentity01.xml
<?xml version="1.0" ?>
<stu>
<name>outman</name>
<age>15</age>
</stu>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值