Day05_JAVAEE系列:XML
XML概述
1)什么是xml?
xml, eXtend Markup Language, 可扩展标记语言
2) html vs xml
都由w3c组织制定的.
html语法特征:语法比较松散
1).不区分大小写 <p> <P> <br/> <BR/>
2).标记的写法不严谨 <p>xxxx</p> <p>xxxx
xml语法,开始的初衷是为了弥补html的缺点
html作用:负责网页的结构
xml作用:
1)描述带关系的数据结构(作为软件的配置文件)
2)存储数据(作为小型的“数据库”)
3)xml作用
3.1描述带关系的数据结构(作为软件的配置文件)(大部分场景)
.properties文件 键值对 无法描述关系
user=root
password=root
user=root(错误描述)
password=root(错误描述)
db.xml 文件:
<db-list>
<db name="mysql">
<user>root</user>
<password>root</password>
</db>
<db name="oracle">
<user>admin</user>
<password>1234</password>
</db>
</db-list>
应用:tomcat服务配置文件,三大框架(ssh struts2 spring hibernate)
3.2存储数据(作为小型的“数据库”)
应用:mysql的数据可以到处,然后用xml文件存储
三、XML语法
xml后缀
浏览器内置了xml解析器,所以可以用浏览器来解析xml文件
1)xml文档声明
语法:<?xml version="1.0" encoding ="utf-8"?>
version: xml文件版本,通常1.0即可
encoding :xml文件被解析器使用什么编码解析
总结:
xml文件读取时中文时的编码问题
1.1保存xml文件时的编码(另存为选择编码)
1.2解析器解析时使用什么编码(xml文档声明的encoding属性)
以上两处 的编码保持一致就不会出现中文乱码问题.
standalone:是否是独立的xml文件(当前的xml是否依赖其他文件)
2)注释
和html注释一样<!-- -->
3)标签、属性(重点)
标签语法:
3.1不能以数字开头
3.2严格区分大小写
3.3标签名中间不要有空格和冒号,不要使用xml作为名称(w3c的保留字)
3.4在一个xml文件中有且仅有一个根标签(根元素)
属性语法:
3.1属性值必须使用单引号或双引号包含,不能没有或者单双引号混用
3.2一个标签内可以存在多个属性,但不能重复
4)特殊字符
和html一样
特殊字符 转义字符
< <
> >
空格
...
5)CDATA块
可以批量处理特殊字符,在CDATA块中的代码不会解析成标签
6)处理指令(了解)
<?xml-stylesheet type="text/css" href="person.css"?>
告诉浏览器如何解析xml文件(使用什么样式)
可以让xml变为html文件(使用什么样式)
四、XML约束之DTD约束(看懂即可) -- 查看w3cshool文档即可
两个概念区分:
1.良好的xml文件:符合w3c制定的语法规则
2.有效的xml文件:符合开发者制定的约束规则
xml约束分类:
dtd约束: 语法比较简单,功能不够强大
应用:struts2, hibernate
schema约束:语法比较复杂,功能比较强大,约束比较细致.
应用:spring tomcat配置
dtd约束语法:
要求:能够看懂dtd约束,写出一个有效的xml文件!!
1)dtd使用方式
1.1 内部dtd
特点:dtd内容直接写在xml文件中
1.2外部本地文件导入
<!DOCTYPE note SYSTEM "note.dtd"> dtd文件在本地文件系统
1.3外部网络文件导入
<!DOCTYPE 根元素 PUBLIC “名称” “http://struts.apache.org/dtds/struts-2.0.dtd”>
2)约束元素
<!ELEMENT 元素名称 类别> 或<!ELEMENT 元素名称 (元素内容)>
类别:
EMPTY: 代表空元素
PCDATA: 代表普通字符串(不包含子元素)
ANY:代表元素任意内容(包含空元素,包含子元素)
(元素内容)
顺序问题:
(元素1,元素2,元素3):一定依次出现元素1,再出现元素2,最后出现元素3
数量问题:
元素1:有且仅出现1次
元素1*:出现0次或多次
元素1+:出现1或多次
3)约束属性
<!ATTLIST 元素名称 属性名称 属性类型 默认值>
默认值:约束属性是否必填
#REQUIRED 必须的
#IMPLIED 非必须的
#FIXED value 固定值的
属性类型:约束属性值是什么
CDATA 普通字符串
(en1|en2..) 枚举,多选一
ID 唯一,在同一个xml文档中属性值必须唯一
五、XML解析之dom解析
1)什么是xml解析?
使用java代码去控制(操作:读取、修改)xml文件
2)xml解析两种方式
dom解析:面向对象的方法。
和html的dom类似。
对象:
Node对象
Document对象
Element对象
Attr对象
Text对象
Comment对象
dom树
sax解析:基于事件驱动的方法。
3)xml的dom解析工具
sun官方-jaxp工具 (java的标准)
非官方- jdom工具
非官方- dom4j (虽然不是标准,好用!!)
4)jaxp的dom解析工具
官方: 纳入jdk的规范中。 org.w3c.dom.* api
4.1 读取xml文件的步骤:
a)创建DocumentBuilderFactory对象
b)获取一个DocumentBuilder对象
c)调用parse方法去读取xml文件
4.2 写出xml文件的步骤:
a)创建TransformFacotory对象
b)获取一个Transform对象
c)调用transform方法写出内容到xml文件
总结:
1)junit工具(必须掌握)
2)xml语法(重点)
3)dtd约束(能写xml文件-- 手动根据dtd文件写有效的xml文档)
4)jaxp的dom解析api (必须回去练习)
Day05_JAVAEE系列:XML的更多相关文章
- 微软BI 之SSIS 系列 - XML Task 中XSLT 样式表转换错误记录
开篇介绍 此文章专门记录 XSLT 样式表转换过程中的语法问题 错误一 值与属性的倒置 修改了几次样式表,但还是一如既往的报错,报错信息如下: [XML Task] Error: An error o ...
- SpringBoot填坑系列---XML方式配置数据库
本次只是简单的运用SpringBoot搭建框架,对其原理并不做深入的探究 1.POM文件 <?xml version="1.0" encoding="UTF-8&q ...
- Day05_JAVAEE系列:Junit
Junit 单元测试开发工具:myeclipse10 内部集成的junit的库 1)什么是junit? junit是一个专业的编写测试代码的工具 2)建立junit测试类的步骤: 2. ...
- 【Java】Java XML 技术专题
XML 基础教程 XML 和 Java 技术 Java XML文档模型 JAXP(Java API for XML Parsing) StAX(Streaming API for XML) XJ(XM ...
- C#读取XML方式
前言 前一篇我们简单给大家做了XML的介绍,现在咱们继续这个系列 XML文件是一种常用的文件格式,例如WinForm里面的app.config以及Web程序中的web.config文件,还有许多重要的 ...
- BI 系列随笔列表 (SSIS, SSRS, SSAS, MDX, SQL Server)
微软 BI ETL 架构设计 如何在 ETL 项目中统一管理上百个 SSIS 包的日志和包配置框架 如何管理和记录 SSIS 各个 Task 的开始执行时间和结束时间以及 Task 中添加|删除|修改 ...
- C# WinForm开发系列 - 文章索引
该系列主要整理收集在使用C#开发WinForm应用文章及相关代码, 平时看到大家主要使用C#来开发Asp.Net应用,这方面的文章也特别多,而关于WinForm的文章相对少很多,而自己对WinForm ...
- C#开源
商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...
- C# 开源项目一
商业协作和项目管理平台-TeamLab 网络视频会议软件-VMukti 驰骋工作流程引擎-ccflow [免费]正则表达式测试工具-Regex-Tester Windows-Phone-7-SDK E ...
随机推荐
- iOS的一些关键字
最近在使用Swift的过程中,感觉到苹果公司为了迎合Swift,在Objective-C中添加了许多关键字.这些关键字一般用来用来修饰属性,或者方法的参数以及方法的返回值等等.而在以前的Objecti ...
- error while loading shared libraries: libseaudit.so.4: cannot open shared object file: Error 40
安装共享库后要注意共享库路径设置问题, 如下: 1) 如果共享库文件安装到了/lib或/usr/lib目录下, 那么需执行一下ldconfig命令 ldconfig命令的用途, 主要是在默认搜寻目录( ...
- python paramiko模拟ssh登录,实现sftp上传或者下载文件
Python Paramiko模块的安装与使用详解 paramiko是短链接,不是持续链接,只能执行你设定的shell命令,可以加分号执行两次命令. http://www.111cn.net/phpe ...
- webservice简介及客户端搭建
在环境变量中,CLASSPATH添加D:\apache-cxf-2.4.2\lib 新建CXF_HOME D:\apache-cxf-2.4.2 在PATH中添加 D:\apache-cxf- ...
- JQuery 多选按钮checkbox
JQuery 多选按钮checkbox 在需要全选和选择部分的时候我们就需要多选在这里主要介绍了具体的实现 JQuery $(function () { //全选或全不选 $("#allbo ...
- iOS模拟器沙盒使用推荐
iOS沙盒路径的查看和使用 1.模拟器沙盒目录文件都在个人用户名文件夹下的一个隐藏文件夹里,中文叫资源库,他的目录其实是Library.因为应用是在沙箱(sandbox)中的,在文件读写权限上受到限制 ...
- Internet History, Technology and Security (Week1)
Week1. History: Dawn of Electronic Computing War Time Computing and Conmmunication Keywords: Electro ...
- Head First - 01.策略模式(Strategy Pattern)
策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户. 当你需要给朋友留下深刻印象,或是影响关键主管的决策时,请使用“这个”定义! 设计原则: 1.找出 ...
- 作为Web开发人员,我为什么喜欢Google Chrome浏览器
来源: http://www.cnblogs.com/QLeelulu/archive/2011/08/28/2156402.html 在Google Chrome浏览器出来之前,我一直使用FireF ...
- Git Server和sourceTree客户端使用说明
一.创建本地仓库 新建一个文件夹,命名为LocalRep,来作为本地仓库. 在终端 cd+拖拽文件夹到终端,打开文件夹在LocalRep目录下操作clone远程仓库到本地,指令如下所示(需根据实际情况 ...