XML笔记杰普.docx

上传人:b****5 文档编号:10169718 上传时间:2023-02-09 格式:DOCX 页数:11 大小:20.11KB
下载 相关 举报
XML笔记杰普.docx_第1页
第1页 / 共11页
XML笔记杰普.docx_第2页
第2页 / 共11页
XML笔记杰普.docx_第3页
第3页 / 共11页
XML笔记杰普.docx_第4页
第4页 / 共11页
XML笔记杰普.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

XML笔记杰普.docx

《XML笔记杰普.docx》由会员分享,可在线阅读,更多相关《XML笔记杰普.docx(11页珍藏版)》请在冰豆网上搜索。

XML笔记杰普.docx

XML笔记杰普

XML笔记

XML简介:

什么是XML?

有什么作用?

是一种元标记语言,可以定义新的标记,和HTML比较相似,但是更强大

基本作用是用来交换数据的,我们可以把它当作是一个文本数据库,也可以用做配置文件等

XML背景:

1)XML代表扩展的标记语言(eXtensibleMarkupLanguage);

2)XML由W3C联盟发展维护;

3)XML是一种元语言,可以用来定义其它标签语言;

4)XML没有定义任何标记,它提供了一种工具定义标记以及它们之间的结构关系;

5)XML是一种用于结构化文本交换的标记语言;

6)XML代表了内容的结构也代表了内容本身;

7)XML继承自SGML(标准标记语言)。

SGML的前身GML由IBM在1960年发明,用于描述设备无关的文本

8)XML是SGML的子语言,由SGML简化而来,起初目的是为Web的结构文档提供服务。

9)W3C组织在1998年2月10日发布XML1.0版,第二个版本发布于2000年10月9日。

10)XML是分层的树形结构的自解释的一种可扩展的标记语言。

XML与HTML的关系:

事实上,HTML和XML不能够进行比较的。

因为XML是一种元语言,而HTML是一种定义好的标记语言。

XML是描述数据的语言,HTML是描是数据外观的语言。

HTML有一套确定的标记。

在W3C标准规范中定义了HTML标记的含义并由部分浏览器实现了。

HTML标记非常适合描述人类易读的可视化文本。

HTML定义了许多表现指令用以优化在浏览器中的显示。

在HTML标记中,数据固有的结构丢失了。

HTML没有维持数据类型信息的完整性、约束、或实体间的其它关系,而XML提供了这些特征。

XML文档的结构:

       XML文档=序言+元素+杂项(可选)

     1)序言

           序言=(XML声明)+(杂项)+(文档类型声明)

          XML声明

              

xml版本信息 (编码信息)(文档独立性信息)?

>

           如:

xmlversion="1.0"encoding="gb2312"standalone="yes"?

>

           文档类型声明

                规定元素的结构和属性列表的取值

           如:

DOCTYPEstudinfoSYSTEM"studinfo.dtd">

     2)元素

           空元素:

<空元素标签名属性="属性值"/>

           非空元素:

<起始标签>内容<结束标签>

                内容=(子元素|字符数据|字符数据段|引用|处理指令|注释)*

                字符数据     

                      字符数据中,不能含有&,<,>,',",需要采用实体引用的方式

                字符数据段:

[CDATA[字符数据]]>

                引用:

ENTITY 引用名 ".......">   

     3)杂项

           处理指令:

XML为其它应用程序准备的接口。

              

处理指令?

>

           注释

-- 注释内容 -->

           空白符指空格、回车等

例子:

xmlverson="1.0"?

>

--这一句一定要求写在文件的第一行-->

--只能有一个根元素即那一对根标签-->

--根标签-->

--根元素的内容-->

--子元素-->

...

XML良好的格式规范是什么?

1)文档声明位于文件的开头

xmlversion="1.0"?

>

2)文档中只能定义一个唯一的根元素(根元素是在文档声明之后的最外层的元素)

3)标签必须闭合,且不能交叉,有元素的起始标签,就必须有其结束标签(空元素除外)

4)层层嵌套,每一对标签总是出于另一对标签的内或和其处于同一层,不能交叉(根元素chuw)

5)大小写敏感,起始标签和结束标签的名字要一致

6)属性值必须用引号引起来

7)注意特殊字符,使用时需要使用转义字符。

注意:

1.第一行一定要写

xmlversion="1.0"?

>

2.xml文件是由元素和元素的内容以及属性组成的,一个xml文件中只能有一个根元素,标签和标签的内容加在一起叫作一个元素。

xml是大小写敏感的,只能以字母或下划线开头。

XML的语法(如何书写一个XML文档)

XML文档是由标签和标签的内容组成的,把这个组合称为元素

非空元素

(起始标签)

 aaa(内容)

(结束标签)

空元素

XML的字符转义:

就是用一个字符代表一种意义

如:

 < 代表 "<",> 代表 ">"," 代表双引号。

& 代表 "&",' 代表单引号

CDATA[........]>

....的部分不必使用转义,其中内容会直接输出。

引用:

实体声明:

ENTITY 引用名 "......">

使用实体,引用

&引用名

例子:

xmlversion="1.0"encoding="gb2312"?

>(XML文件的声明)

--thisisacommenthehe-->(注释)

(根元素)

  

  (空元素)

  张三

XSLT,是用于对XML进行文档格式转换,把一个XML文档转换成另一种格式的XML文档,但是其中内容是不变的。

DTD:

文档类型的定义,可以定义元素等

在XML文档中调用DTD:

两种方法:

第一种,内部调用一个DTD:

xmlversion="1.0"standalone="no"?

>

--必须名字都一样g-->

--这是一个内部调用DTD的方法-->

DOCTYPEg[

    

ELEMENTg(#PCDATA)>

    ]>

注意:

studinfo与(#PCDATA)有空格

文档类型名与根元素名必须一致

第二种,外部调用一个DTD文件

注意点:

(1)standalone="no"

(2)注意dtd文件的路径

DTD的结构

1.     元素类型声明:

指明元素的名字和内容

ELEMENT 元素名字 (元素内容)>

元素内容=EMPTY||ANY|| 元素内容 ||#PCDATA

#PCDATA:

可解析的字符数据

元素内容:

指定的子元素

EMPTY:

代表空元素

ANY:

任何都可以

元素的出现次数可以选:

     * 零次或多次

     + 一次或多次

     ?

 零次或一次

     | 可选

2.     属性声明

属性:

由“=”分隔的成对的属性名和属性值构成,只能出现在元素标记的内部。

结束标记不能带属性,一个元素可以具有多个属性

ATTLIST 对应的元素名属性名属性取值类型属性默认值>

                属性取值类型

               1、CDATA:

可析字符

               2、Enumerated:

枚举类型,由“|”分隔的可能的属性值列表

               3、Entity:

实体

               4、ID属性值:

属性值不能重复

                属性默认值:

                注意

                     1、#REQUIRED:

必须提供属性值

                     2、IMPLIED:

可提供也可不提供

3. FIXED:

不能修改

3.     实体声明

ENTITY 实体名字 “helloworld!

”>

&实体名字

名域空间:

什么是名域空间?

干什么用的?

解决XML文档中命名冲突的问题,即将XML文档与引用URI标识的名域相结合,来限定其中的元素和属性名

名域的声明:

直接定义

类比:

名字和身份证

语法:

xmlns:

名域前缀=”url”(唯一性)

2.      缺省声明

xmlns=”url”

名域的使用:

用名域限定元素、用名域限定属性

解析器:

什么是解析器?

有什么用?

1.      读取XML文档

2.      如果有DTD,也拿过来读,分析XML的结构内容并进行处理(从XML文档中得到信息)、验证XML是否格式良好有效。

JAVA中解析XML文档(XML有四种解析方式)

在java中如何解析一个xml文档呢?

先看看xml的解析方式

xml有四种解析方式:

1.      Dom:

文档对象模型

2.      SAX:

事件机制驱动

3.      Jdom

4.      JADP

SAX:

基于事件处理模型,在读取XML文件时会触发相应的事件,这些事件被预先注册的事件处理器来处理

优点:

速度快,占用的资源少,边读边解析,适合要求快速处理XML文档的场合,如:

Applet等

缺点:

不能前后遍历,不能增删改

/**知识点:

SAX解析方式来解析XML文档

 * 程序目标:

 *java文件:

 *MyContentHander.java:

监听器类(SAX解析方式是基于事件处理的方式)

 * 在java中解析一个XML文档,将里面的元素读取出来打印到终端上

 * 要求使用SAX解析方式

 * 流程:

 *1.得到工厂对象

 *2.使用工厂对象创建SAXParser

 *3.使用SAXParser对象得到一个XMLReader对象,这个对象可以解析XML文档

 *4.为XMLReader对象注册监听器

 *5.使用XMLReader对象的parse()方法执行XML文件进行解析*/

packageMY.SAX;

importjava.io.IOException;

importjavax.xml.parsers.*;

importorg.xml.sax.InputSource;

importorg.xml.sax.SAXException;

importorg.xml.sax.XMLReader;

publicclassSAXTest{

      publicstaticvoidmain(String[]args)throwsParserConfigurationException,SAXException,IOException{

            SAXParserFactoryfactory=SAXParserFactory.newInstance();

            SAXParsersp=factory.newSAXParser();

            XMLReaderxr=sp.getXMLReader();

            InputSourceis=newInputSource(newString("student.xml"));

            xr.setContentHandler(newMyContentHander());

            xr.parse(is);

//        xr.parse("student.xml");

      }

}

packageMY.SAX;

importorg.xml.sax.Attributes;

importorg.xml.sax.SAXException;

importorg.xml.sax.helpers.DefaultHandler;

publicclassMyContentHanderextendsDefaultHandler{

      publicvoidcharacters(char[]arg0,intarg1,intarg2)throwsSAXException{

            System.out.println(newString(arg0,arg1,arg2));

      }

      publicvoidendDocument()throwsSAXException{

            System.out.println("end");

      }

      publicvoidendElement(Stringarg0,Stringarg1,Stringarg2)throwsSAXException{

            System.out.println(arg1);

      }

      publicvoidstartDocument()throwsSAXException{

            System.out.println("start");

      }

      publicvoidstartElement(Stringarg0,Stringarg1,Stringarg2,Attributesarg3)throwsSAXException{

            System.out.println(arg1);

      }

}

DOM:

文档对象模型

将整个XML文件读到内存中,然后转化为一棵由各种节点组成的树

优点:

可以前后遍历XML,也可以增删改任意的节点

缺点:

占用的资源多,速度慢,不适合处理大型的XML文档

/**

 * 知识点:

DOM解析方式解析一个XML文件

 * 程序目标:

将XML文件中的元素属性全部打印出来

 */

packageMY.DOM;

importjava.io.IOException;

importjavax.xml.parsers.DocumentBuilder;

importjavax.xml.parsers.DocumentBuilderFactory;

importjavax.xml.parsers.ParserConfigurationException;

importorg.w3c.dom.Document;

importorg.w3c.dom.Element;

importorg.w3c.dom.NamedNodeMap;

importorg.w3c.dom.Node;

importorg.xml.sax.SAXException;

publicclassDomTest{

      

      publicstaticvoidtest(Nodestart){

            System.out.println("nodeName:

"+start.getNodeName()

                          +"nodeValue:

"+start.getNodeValue());

            for(Nodechild=start.getFirstChild();

            child!

=null;child=child.getNextSibling()){

                   test(child);

             }

      }

      publicstaticvoidtest2(Nodestart){

            System.out.println("NodeName:

"+start.getNodeName()

                          +"nodeValue:

"+start.getNodeValue());

            if(start.getNodeType()==Node.ELEMENT_NODE){

                   NamedNodeMapnnm=start.getAttributes();

                   for(inti=0;i

                          Nodenode=nnm.item(i);

                          System.out.println("attName:

"+node.getNodeName()

                                       +"attValue:

"+node.getNodeValue());

                    }

             }

            for(Nodechild=start.getFirstChild();

            child!

=null;child=child.getNextSibling()){

                   test2(child);

             }

      }

      publicstaticvoidmain(String[]args)throwsParserConfigurationException,SAXException,IOException{

            DocumentBuilderFactorydbf=DocumentBuilderFactory.newInstance();

            DocumentBuilderbuilder=dbf.newDocumentBuilder();

            Documentdoc=builder.parse("student.xml");

            Elemente=doc.getDocumentElement();

            test2(e);

      }

}

   

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1