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. web前端兼容性整理+完善

    [技巧类] 1.对一些标签统一规范. 2.padding,marign,height,width 写好标准头 <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1 ...

  2. poj 3345 树形DP 附属关系+输入输出(好题)

    题目连接:http://acm.hust.edu.cn/vjudge/problem/17665 参考资料:http://blog.csdn.net/woshi250hua/article/detai ...

  3. tomcat的相关使用

    tomcat服务器是apache下非常优秀的一款web服务器,当今的互联网企业中90%左右的中小型企业使用的都是tomcat.tomcat在部署项目时有很多很多的解决方案,这些你都清楚吗? 1.同一个 ...

  4. [topcoder]TheConsecutiveIntegersDivOne

    http://community.topcoder.com/stat?c=problem_statement&pm=13625&rd=16278 首先,如果记得曼哈顿距离最小值那个问题 ...

  5. [转]Android中Spinner下拉列表(使用ArrayAdapter和自定义Adapter实现)

    今天学习了Spinner组件,使用Spinner相当于从下拉列表中选择项目,下面演示一下Spinner的使用(分别使用ArrayAdapter和自定义Adapter实现) (一):使用ArrayAda ...

  6. 利用C语言编辑画图程序的实现方法

    不知道大家在进行开发县级电网调度自动化系统的时候,是否都会遇到一个问题就是:要绘制一个电力系统一次接线图.大家都应该知道其实电力系统的一次接线图是较为复杂的,如果想要使用一般的编程方法来进行绘制的话, ...

  7. TP5.1:数据库的增删改查操作(基于面向对象操作)

    我们现实中对数据库的增删改查操作,都是使用模型类进行操作的(表名::),也就是面向对象操作,只有底层的代码用的是数据库操作(Db::table('表名')) 下面我将贴出模型类进行的增删改查操作,通过 ...

  8. IIS7 http自动跳转到https(通过编辑Web.config实现)

    本文摘自:https://www.cnblogs.com/wxbug/p/7054972.html 1.下载安装URL重写模块:Microsoft URL Rewrite Module 32位:htt ...

  9. C++学习之继承中的成员访问控制

    由基类到派生类的过程中,在派生类里如何访问基类成员,以及派生类对象如何访问基类成员,是根据派生类在从基类派生时是以什么方式进行的派生:public.protect或者private.下面说一下在这三种 ...

  10. PMVS论文随笔(1)

    博客园排版系统真的比较挫,可以访问我的github.io阅读 关于Unit的概念 在pmvs的源代码中,有一个函数是getUnit ,其函数如下(在PMVS2的windows版本代码,optim.cc ...