1.xml的应用

  *不同的系统之间的传输数据(qq消息传输)

  *用来表示生活中有关系的数据(省市区的包含关系)

  *经常用在文件配置

     **比如现在连接数据库,肯定知道数据库的名称和密码及用户名。

        **如果修改数据库信息,则无需修改源代码,只需修改配置信息即可。

2.xml的申明

<?xml version="1.0" encoding="utf-8"?>
<person>
<name>baojuan</name>
<age>20</age>
<a>a&lt;b</a>
<b>a&gt;b</b>
<c>&quot;a&lt;b&quot;</c>
<b>&apos;a&gt;b&apos;</b>
</person>

注:<?xml version="1.0"encoding="utf-8"?>必须要放在文件的首行,而且xml后必须要有一个空格,encoding前面也必须要有一个空格。

  标签的开始必须要有结束,规范性的。

  一个xml文件有且仅有一个根标签,其他的标签都是它的子标签。

  在xml文件中会把空格和换行也当作内容来处理。

  xml文件是区分大小写的。标签不能以数字和下划线开头。

  xml标签中不能包含空格和冒号,不能以xml开头,标签可以是中文。

对于大于小于号,双引号,单引号等特殊字符需要进行转义。但可以用CDATA区进行处理。

写法:<![CDATA[ 内容 ]]>

<?xml version="1.0" encoding="utf-8"?>
<person>
<name>baojuan</name>
<age>20</age>
<![CDATA[<a>a<b</a>
<b>a>b</b>
<c>"a<b"</c><d>'a>b'</d> ]]>
</person>

*PI指令用于指示显示的样式,用于引入css文件,但几乎用不到。xml一般用于保存数据,PI指令只对英文起作用,对中文标签不起作用。

3.xml约束

<?xml version="1.0" encoding="utf-8"?>
<person>
<name>baojuan</name>
<age>20</age>
<![CDATA[<a>a<b</a>
<b>a>b</b>
<c>"a<b"</c><d>'a>b'</d> ]]>
<猫>100</猫>
</person>
*人不可能拥有猫这个属性,但这样写任然符合语法,所以可以运行,so需要一些规则来约束。
xml的约束:dtd约束     schema约束

<?xml version="1.0" encoding="utf-8"?>
<!--引入外部dtd文件<!DOCTYPE 根元素名称 SYSTEM "dtd路径">
<!DOCTYPE person SYSTEM "test.dtd">
-->

<!--内部dtd文件 <!DOCTYPE 根元素名称[内容]>-->
<!DOCTYPE person[
<!--<!ELEMENT person (name+,age,sex,school,面积)>-->        //+  表示可以含有1到多个同样的实体
<!ELEMENT person (name|age|sex|school|面积)>       // | 表示枚举,只能含列举出的标签中的任意一个
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex EMPTY>      //EMPTY表示此标签内必须为空
<!ELEMENT school ANY>
<!ELEMENT 面积 ANY>      //ANY表示标签内可以任意
]>

//(#PCDATA)之前必须要有空格。

<!-- 使用外部网络上的dtd文件(struts.xml框架)
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<!DOCTYPE 根元素名称 PUBLIC "DTD名称""DTD文档的URL">
 -->
<person>
<name>baojuan</name>
<!--<age>20</age>
<sex></sex>
<school>4555</school>
<面积>dhhahs</面积>-->
</person>

4.xml的解析    (dom解析技术和sax解析技术)

**根据xml的层级结构在内存中分配一个树形结构,把xml的标签属性文本都封装成对象,使用dom来解析时,如果文件过大,会造成内存溢出。

优点:很方便实行增删改操作。

**使用sax解析时,采用事件驱动,边都变解析。从上到下依次解析,没遇到一个对象,就把对象名称返回,不会造成内存溢出,可以实现查询,但不能进行增删改操作。

想要解析xml,首先需要解析器,不同的公司提供了不同的解析器,通过api方式提供。

sun公司提供了jaxp解析器,dom4j组织提供了dom4j解析器(*****实际开发中常用*******),jdom组织提供了jdom解析器。

**jaxp解析器在jdk的javax.xml.parsers包里面

四个类:针对dom和sax解析的四个类

    dom:documentBuilder:解析器类

       * 这个类是一个抽象类,不能new,只能使用DocumentBuilderFactory.newDocumentBuilder() 方法获取。

       * 一个方法,可以解析xml,parse("xml路径"),返回doucument整个文档。

       * 返回的document是一个接口,父节点是node,如果在document里找不到想要的方法,就要去node里去找。

       * 在document里,有一个方法,getElementsByTagName(String tagname)返回的是一个nodeList数组,可以得到标签数组。

       * createElement(String tagName)方法创建一个标签。

       * createTextNode(String data)方法创建一个文本。

       * appendChild(Node newChild)node接口中的方法,将文本添加到标签下面。

       * removeChild(Node oldChild)删除节点,但要经过父节点来删。

       * getParentNode()获取父节点

       * NodeList    list

        getLength()      //得到集合的长度

        item(int index)         //根据下标取到具体的值

        for(int i=0;i<list.getLength();i++){

          list.item(i);

        }

       documentBuilderFactory:解析器工厂

       这个类是一个抽象类,不能new,只能通过newInstance()来获得documentBuilderFactory的对象实例。

    sax:SAXParser:解析器类

       SAXParserFactory:解析器工厂

xml的应用与dtd约束的更多相关文章

  1. 【代码笔记】XML深入学习:DTD约束与DTD语法(1)

    2015-12-27 文件名    student.xml <?xml version="1.0" encoding="GB2312" standalon ...

  2. 【代码笔记】XML深入学习:DTD约束与DTD语法(2)

    DTD语法之定义实体(了解即可) 实体分为一般实体和参数实体. 定义实体:定义变量 引用实体:使用变量 一般实体:定义实体在DTD中,实体引用在xml中. 参数实体:定义实体在DTD中,实体引用在DT ...

  3. Struts2配置dtd约束

    Struts2和Struts1的区别: 一.elclipse-ee开发 搭建环境eclipse-ee 1.加入jar包  apps/struts2-blank.war解压 2.在web.xml文件中配 ...

  4. 【JAVA与XML、dtd约束、Schema约束】

    一.XML. (1)XML:Extensible Markup Language (2)XML是一种标记语言. (3)XML的设计宗旨是传输数据,而不是显示数据. (4)XML标签没有被预定义,即使用 ...

  5. xml语法、DTD约束xml、Schema约束xml、DOM解析xml

    今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的ht ...

  6. XML约束——DTD约束

    参考: 方立勋老师的讲课视频.   什么是XML约束 •在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束. 为什么需要XML约束 常用的约束技术 •XML DTD • ...

  7. xml技术DTD约束定义

    XML约束 在XML技术中,可以编写一个文档来约束一个xml文档的书写规范,这称之为XML约束为什么需要XML约束? class.xml <stu><面积>?人怎么会有面积元素 ...

  8. XML的DTD约束

    DTD约束:DTD的声明和引用 1.内部DTD文档 <!DOCTYPE 根元素 [定义内容]> 2.外部DTD文档 <!DOCTYPE 根元素 SYSTEM "DTD文件路 ...

  9. XML DTD约束 对xml文件的crud的查询Read Retrieve操作 xml递归遍历

    本地的dtd文档 xml中引入dtd文档 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE 书 ...

随机推荐

  1. Andrew Ng 的 Machine Learning 课程学习 (week2) Linear Regression

    这学期一直在跟进 Coursera上的 Machina Learning 公开课, 老师Andrew Ng是coursera的创始人之一,Machine Learning方面的大牛.这门课程对想要了解 ...

  2. git 摘要

    git使用摘记 git冲突的问题主要是在修改的部分而不是添加的部分, 如果merge的文件在同一个位置有不同的信息则git会报错 git push origin中的origin表示的是远程的仓库名为o ...

  3. MachineLearningPreface

    机器学习(包括监督学习, 无监督学习, 半监督学习与强化学习) 监督学习(包括分类与线性回归) 分类(标签的值为散列的"yes"或者"no", "go ...

  4. C# DialogResult的用法

    在程序中,经常会弹出一个对话框来让用户填写一些信息,填写完成后,当用户点击“确定”按钮后,在主窗体中进行其他的处理.比如一个简单的例子,在主窗体中有一个菜单,是“增加用户”,当点击这个菜单之后,我们需 ...

  5. pycharm乱码

    1.文件编码类型 2.查看IDE编码类型

  6. image压缩

    public byte[] compressPic(byte[] data) { if(data.length == 0){ return new byte[0]; } Image img = nul ...

  7. CSS的相对定位和绝对定位(position)

    什么是定位呢? 定位(position),故名思议,就是确定元素在页面中的位置. CSS的常用定位有两种,一种是相对定位,一种是绝对定位. 下面我们看例子 <html> <head& ...

  8. SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1fa5519] was not registered for synchronization because synchronization is not active

    Creating a new SqlSessionSqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@1fa5519] w ...

  9. java之finally的用法

    package com.smbea.demo.tryCatchFinally; /** * java之finally的用法 * @author hapday * @2017年2月5日 @上午12:21 ...

  10. Cookie存储大小、个数限制

    一.浏览器允许每个域名所包含的cookie数: Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie. Firef ...