1.Xml的介绍:
xml技术用于解决什么问题?
Xml---eXtensibleMarkupLanguage的缩写,可扩展的标记语言.---------是w3c组织制定的.
XML被设计用来传输和存储数据
XML技术是W3C组织(WorldWideWebConsortium万维网联盟)发布的,目前遵循的是W3C组织于2000年发布的XML1.0规范。
XML被广泛认为是继Java之后在Internet上最激动人心的新技术。
xml语言用于描述类似上面的有关系的数据
<?xml version="1.0" encoding"utf-8"?><personList><person><id>20141001</id><name>Bill Gates</name><age>60</age></person>20141002StevenJobs68</personList>
xml技术用于解决什么问题?
Xml---eXtensibleMarkupLanguage的缩写,可扩展的标记语言.---------是w3c组织制定的.
XML被设计用来传输和存储数据
XML技术是W3C组织(WorldWideWebConsortium万维网联盟)发布的,目前遵循的是W3C组织于2000年发布的XML1.0规范。
XML被广泛认为是继Java之后在Internet上最激动人心的新技术。
xml语言用于描述类似上面的有关系的数据
<?xml version="1.0" encoding"utf-8"?><personList><person><id>20141001</id><name>Bill Gates</name><age>60</age></person>20141002StevenJobs68</personList>
2.Xml的语法(了解):
Xml语法实际上就是告诉你如何去写一个xml文件不报错.
2.1.文档声明:
2.2.Xml的元素:
l命名规范:
一个XML元素可以包含字母、数字以及其它一些可见字符,但必须遵守下面的一些规范:
区分大小写,例如,<P>和<p>是两个不同的标记。
不能以数字或"_"(下划线)开头。
不能以xml(或XML、或Xml等)开头。
不能包含空格。
名称中间不能包含冒号(:)(有特殊用途)。
刚刚的元素的命令规范是一样的.
Xml的属性的值必须要使用“”或这 ‘’引起来.
<mytag><name><firstname></firstnamename><secondname></secondname></name></mytag>
Xml的注释与html的注释是一样的.
同样的,注释不要嵌套就好了.
语法:<![CDATA[内容]]>
Greatthan:大于
lessthan:小于
Apostrophe:单引号
ampersand:and符号
quotation:双引号
PI-----processinginstruction---处理指令
作用:用来指挥软件如何解析XML文档。
语法:必须以“<?”作为开头,以“?>”作为结尾。
常用处理指令:
XML声明:<?xmlversion=“1.0”encoding=“GB2312”?>
xml-stylesheet指令:
作用:指示XML文档所使用的CSS样式XSL。
Xml约束是用来约束一个xml文档到底应该怎么去写的.
Xml的约束技术到底有哪些呢?
Dtd,schema----这两个技术也并不仅仅用在约束xml上,还用在一些其他的地方.例如:dtd就还用在了html文档中.
Dtd出现了之后,很多技术中都使用到了,但是有些不好,例如不能对数据的类型做出更加精确的限定,为了克服这种局限性,所以就
弄出了schema技术.来取代dtd.(一些近些年出现的新的技术,一般都使用的schema约束.例如,android)
Schema是趋势,咱们的重点是掌握schema技术.
Schema是重点--------对于大家的要求,能够看明白一个个现成的已经提供好的schema文档就够了,能够根据这文档写出对应的
符合规范的xml文件.(并不要求能够自己去写一个schema文档出来.)
学习这约束技术的时候:首先学dtd,然后学schema(dtd简单,schema很复杂)
DTD(DocumentTypeDefinition),全称为文档类型定义。
<!ELEMENTpersonListANY>
<!ELEMENTperson(id,name,age)>
<!ELEMENTid(#PCDATA)>
<!ELEMENTname(#PCDATA)>
<!ELEMENTage(#PCDATA)>
对于编写xml,如果要进行校验,那么可以使用工具 MyEclipse的Run Validation菜单手动去校验.
如果没有自动校验,可以手动的去运行校验一下.
在内部直接写
引入外部的文件:
第一种:dtd文件在本地
?><!DOCTYPE personList SYSTEM "person.dtd">BillGates</personList><!DOCTYPE personList SYSTEM "person.dtd">表示引入的文件在本地,其中DOCTYPE是固定的,需要大写,跟上根标签名字,SYSTEM表示 文件在本地,空格跟上文件的路径第二种--dtd文件在互联网上:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
包括的各个部分的意思:
DOCTYPE:表示引入dtd文件,是固定的
Html:根标签的名字,是html
PUBLIC:是互联网上的一个公共的dtd文件
"-//W3C//DTDHTML4.01Transitional//EN":dtd在互联网上的名称
"http://www.w3.org/TR/html4/loose.dtd":dtd的路径
属性定义:
Attribute----
在定义属性的时,设置的说明部分是有一些固定的值的.
举例:
<!ATTLIST页面作者
姓名CDATA#IMPLIED
年龄CDATA#IMPLIED
联系信息CDATA#required
网站职务CDATA#FIXED"页面作者"
个人爱好CDATA"上网">
CDATA:表示属性值为普通文本字符串。
ENUMERATED:枚举,提供的若干的值中的一个
IDidentity:id类型的值,是唯一的,在写id时必须要以字母开始,不能以数字开始,并且id不运行重复
ENTITY(实体):为了实现复用而定义的.
l实体定义:
在DTD定义中,一条<!ENTITY…>语句用于定义一个实体。
实体可分为两种类型:引用实体和参数实体。
参数实体:是在dtd文件中使用
引用实体:在xml文件中使用的
Xml是用来表示数据,存储数据的,肯定会涉及到向xml中crud数据操作.
Xml是一个非常流行的通过数据交换的格式.
Xml文件中的数据,要通过解析程序读取出来,然后去操作.Xml非常流行,所以要解析xml的程序就会有很多种,每一种我们都称之为
解析器.(解析器就有很多种了,这么多解析器,肯定有好的,肯定有更好的,)
最终的pk的结果是:dom4j的解析器以及一个叫做pull的解析器完胜。
Xml会用在不同平台下,dom4j是用在javaee中的开发比较多的,pull解析器是用在android中比较多的.
Dom4j,dom,sax
ldom解析器:
Html的时候学了htmldom(documentobjectmodel),那么在这里的xml的dom解析器也叫做xmldom(文档对象模型)
Dom---文档对象模型,现在将xmldom-----现在的文档就是xml文件了
SAX(simple API for XML)是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。而且相比于DOM,SAX可以在解析文档的任意时刻停止解析,但任何事物都有其相反的一面,对于SAX来说就是操作复杂。
Dom4j解析器: dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。在IBM developerWorks上面可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在哪个方面都是非常出色的。这是必须使用的jar包, Hibernate用它来读写配置文件。
JAXP:一个开发包---集成了dom和sax两种解析器,这个包也集成到标准的jdk中去了.(你安装的jdk中就有了这两种解析的包的实现)
使用DocumentBuilderFactory对xml进行Crud 增删改查操作