01_xml&dom_sax_dom4j编程

原创 2013年12月03日 23:25:58
一、XML简介及语法:
1.XML:eXtensible Markup Language(可扩展标记语言)
2.产生原因:用来处理大量有关系的数据
3.作用:
1).用来系统传输数据
2).用来存储数据
3).作为软件的配置文件
4.xml语法:
1).文档声明:
注意:文档声明出现在xml的第一行第一列
<?xml version = "1.0" ?>
version 版本号 version属性是必须的属性
encoding 编码集 可选
standalone 是否需要依赖其他的文档 yes/no
2).元素:
1'.元素:标签
标签的写法:
<span></span>  <span/>
标签的嵌套:必须正确的嵌套
xml有且只有一个根标签
2'.元素的命名规范:
区分大小写
不能以数字或_开头
不能以xml开头
元素名称的中间不能出现空格和冒号
3).属性:
一个标签可以有多个属性,每个属性都有自己的名称和取值
属性值一定要使用双引号或单引号引起来
定义属性时必须遵循与标签相同的命名规范
在xml中,标签属性代表的信息,可以通过子元素来描述
4).注释:
<!-- 注释内容 -->
注释不能嵌套
注释不能出现在文档声明之前
5).特殊字符和CDATA区:
转义字符:
< : &alt;
> : &gt;
& : &amp;
" : &quot;
' : &apos;
空格 :&nbsp;
CDATA区:<![CDATA[ 普通文档 ]]>
6).处理指令(PI):用来指挥解析引擎如何解析xml文档内容
例:<?xml-stylesheet type="text/css" href="1.css"?>
7).配置文件:
properties:键值对
xml:可以更好的描述层次关系,因为xml是可扩展的标记语言
二、xml的约束:DTD 和 Schema
1.DTD:文档类型定义:
编写步骤:
1).xml文档需要出现哪些标签、个数是多少
<!ELEMENT 元素名称 元素类型>
2).查询xml的元素类型是什么:简单or复杂
3).在xml中引入dtd
2.DTD引入方式:
1).文档内部:
<!DOCTYPE 根标签 [
<!ELEMENT 元素名称 元素类型>
...
]>
2).文档外部:
本地:<!DOCTYPE 跟标签 SYSTEM "xxx.dtd">
网络:<!DOCTYPE 根节点 PUBLIC "DTD名称" "DTD路径">
3.DTD语法:
1).元素的定义:
1'.语法:<!ELEMENT 元素名称 元素类型>
2'.元素的类型:
#PCDATA :可解析的字符数据
子元素:
EMPTY:空元素
ANY:任意
3'.子元素出现的次数:
+ :一次或多次
* :0次或多次
? :0次或一次
4'.子元素的顺序:
, : 子元素出现必须按照顺序
| : 子元素出现是或关系
2).属性的定义:
1'.语法:<!ATTLIST 元素名称 属性名称 属性类型 属性约束>
2'.属性类型:
CDATA:字符数据(字符串)
枚举:枚举类型
ID:标识的值是唯一的
3'.属性约束:
#REQUIRED :属性必须出现
#IMPLIED:属性是可选的
#FIXED:属性是固定值
默认值:
3).实体的定义:
语法:<!ENTITY 实体名称 实体值>
三、xml解析:(解析技术有多种,常用的DOM和SAX)
1.DOM:Document Object Model 文档对象模型 将XML一次性加载到内存中,形成一个树形结构
2.SAX:Simple API for XML.不需要将文档一次性加载到内存中,边读边解析,事件驱动方式
3.DOM和SAX的区别:
1).DOM一次性将文本加载到内存,形成树形结构,优点是方便进行增加、修改删除操作,缺点是如果文档非常大,容易导致内存溢出
2).SAX是边读边解析,不易导致内存溢出,不能做增加、修改、删除操作
4.Node:节点 所有的内容都是节点,包括元素、属性、文本、文档
5.Jaxp解析过程:
1).DOM解析:
1'.创建解析器工厂
2'.由解析器工厂来创建解析器
3'.通过解析器解析xml文档
4'.通过Document对象获取节点
2).SAX解析:
1'.创建解析器工厂
2'.由解析器工厂来创建解析器
3'.通过解析器解析xml文档--->绑定处理器
6.Dom4j解析过程:
解析过程:
1).获得Document对象
1'.通过读取xml文件,获得document对象
SAXReader reader = new SAXReader();
Document document = reader.read("xxx.xml");
2'.解析xml形式的文本,获取document对象
Document document = DocumentHelper.parseText("<members></members>");
3'.主动创建document对象
Document document = DocumentHelper.createDocument();
2).通过document对xml文档进行CRUD解析操作
3).将文档写入xml文件:(XMLWriter、OutputFormat)
XPath:方便查询XML的节点,dom4j支持XPath
版权声明:本文为博主原创文章,未经博主允许不得转载。

Android之手机也可以编程

当你的电脑不在身旁时,为啥不拿起你的安卓手机编程,苹果就不知道了,在捣鼓手机的时候发现了很多有趣的编程软件。 1.C和C++的编译及运行——C4droid。      当你运行HelloWorld...
  • iaiti
  • iaiti
  • 2013年09月22日 18:58
  • 11817

ReactiveCocoa 函数响应式编程简介 链式编程 函数式编程 响应式编程

最近,RAC的名气可谓是越来越大,出于对技术的探索心(为了装逼),最近研究学习了一下RAC,以下是本人在学习中对其的一些粗浅的认识; 首先,什么是RAC,ReactiveCocoa时Github上的...
  • zhaomengnan
  • zhaomengnan
  • 2016年03月24日 21:58
  • 1027

Hadoop(四)——编程核心MapReduce(上)

上篇讲述了Hadoop的核心内容之一HDFS,是Hhadoop分布式的平台基础,而这讲的MapReduce则是充分利用Hdfs分布式,提高运行效率的算法模型 ,Map(映射)和Reduce(归约)两个...
  • liujiahan629629
  • liujiahan629629
  • 2015年09月09日 00:07
  • 3515

开发自己的编程语言

编程是一门艺术,而编程语言则是这门艺术的缔造者。计算机系的很多学生都对编程语言涉及到的编译原理表示畏惧,其实编译原理本身并不复杂,不过由于目前市面上有关编译原理的书籍大部分都是由国外的原著翻译过来的,...
  • a499068735
  • a499068735
  • 2013年02月03日 22:11
  • 941

编程中常用的英文单词

1. category [ˈkætəgəri] n.类型,部门,种类,类别,类目;[逻,哲]范畴;体重等级 2. Expert abbr.Expanded Pert (program evalu...
  • zhoujn90
  • zhoujn90
  • 2013年09月01日 11:18
  • 11727

我的自动化编程

记录一个想法,不是今天才想。 这只是我的自动化编程,如果有读者不小心看到这篇文章,请不要把它想得很高大上。 因为我已经实现了在thinkphp3.1.2下半自动生成标准的CURD代码,可以给视图带...
  • myminner
  • myminner
  • 2017年06月19日 14:11
  • 842

普通人如何学习编程

在计算机使用如此普遍的今天,编程似乎也快要成为基础技能,那么普通人如何学习编程呢?...
  • w1196726224
  • w1196726224
  • 2016年09月01日 06:53
  • 9642

一个非常正确且强大的编程学习方法

一旦你发现一个学习工具,它采用自上而下的方法,那么什么是最好的学习方法?我对这有一个具有争议性的观点:我认为尽可能快地记住基础知识对初学者而言是绝对有必要的。当成为更高级的学习者,记忆很快成为一个被丢...
  • wuchengzeng
  • wuchengzeng
  • 2015年08月25日 13:46
  • 3301

我的编程之路(一) 兴趣是可以培养的

一年之前的我怎么也没有想到自己会走编程这条道路,总是感觉自己一定会在动漫那方面发展,所以大一、大二一直借着画画来逃避编码、借着考试的分数来麻木自己,至少那样的虚荣心可以让我感觉自己还算是个与计算机专业...
  • hzk1562110692
  • hzk1562110692
  • 2013年06月24日 12:37
  • 1339

十大编程算法助程序员走上高手之路

算法一:快速排序算法 快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比较,但这种状况并不常见。事实上,快速...
  • Leolu007
  • Leolu007
  • 2016年07月01日 10:13
  • 1111
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:01_xml&dom_sax_dom4j编程
举报原因:
原因补充:

(最多只允许输入30个字)