是两个不同的标签
2、不能以数字开头。
3、不能以xml(或者XML、或Xml等开头)。
4、中间和开头不能包含空格
5、名称中间不能包含冒号(:)
标签:
注意:在一个xml文件中,有且仅有一个根标签
属性:
1、可以有很多个属性,每个属性以name=“值”形式存在
2、属性值必须使用引号包含,要么是单引号,要么是双引号,不能单双引号混合使用
3、在同一个标签内不能出现两个同名的属性
4)转义字符
5)CDATA
CDATA可以同时对CDATA块的内容进行转义
]]>
6)处理指令
三、xml约束(DTD)
1、什么是良好的xml?
符合w3c制定xml语法
2、什么是有效的xml?
符合约束规则(例如一个学生出现多个性别标签,这不是有效的)
约束xml:
1、dtd约束:语法比较简单,功能不够丰富(数据类型比较单一)
例如:Struts2,hibernate的xml约束就是使用dtd
2、schema约束:为了替代dtd约束,语法相对强大,功能比较丰富(数据类型丰富,支持名称空间)
例如:spring,tomcat的xml和web.xml就是用schema
1)dtd的约束的导入方式:
1、内部导入
特点:
dtd内容和xml内容放在一个文件
2、外部导入
特点:
本地外部导入:dtd文件保存在本地文件系统中
网络外部导入:dtd文件保存在互联网上
2)dtd语法:
约束元素
或
类别:(粗略控制,不像schema)
EMPTY:空元素
PCDATA:普通字符串(包括空字符,不包括子元素)
ANY:任意内容(包含子元素)
元素内容
顺序问题: (子元素1,子元素2,..) 一定从左到右按顺序出现,否则违反约束
数量问题:
子元素1:有且仅出现1次
子元素1+:至少出现1次
子元素1?:出现0或1次
子元素1*:出现0或多次
约束属性
默认值: 控制属性是否必须
#REQUIRED 属性值是必须的
#IMPLIED 属性不是必须的
#FIXED value固定值的
属性类型:控制属性值的内容
CDATA:普通字符串
(值1|值2|值3):枚举,任选其一值
ID:唯一值
四、xml解析之DOM解析
1)用java代码去操作xml文件。
2)xml解析方式:
DOM解析:
xml DOM解析原理:xml文档被封装成不同的对象,通过这些对象操作xml文档
特点:一次性把整个xml文档读入内存,然后组建DOM树。占用较大的内存
不适合读大文件,容易内存溢出
面向对象的编程的编程方式
SAX解析:解析原理,读取一点,解析一点,占用内存非常小。比较适合读大文件,基于事件驱动的
3)DOM解析工具
jaxp:
jdom:
dom4j:
4)按照DOM原理使用jaxp解析xml文件
1、读取xml开发步骤:
1)创建DocumentBuilderFactory实例,用newInstance创建
2)通过DocumentBuilderFactory实例创建DocumentBuilder
3)通过DocumentBuilder的parse方法读取xml文件,返回一个Document对象
常用的方法:
getElementsByTagName() 根据标签名查元素
getElementById() 根据id元素
getAttribute("name") 属性
getTextContent() 文本
NodeList:
getLength() 获取节点的长度
item(index) : 根据下标找节点
b)修改xml开发步骤:
1)创建TransformerFactory实例
2)通过TransformerFactory实例得到Transformer
3)通过Transformer的transfer方法把Document写出xml文件
常用的方法:
createElement("name") 创建元素
setAttribute("name","value"); 创建或修改元素的属性
removeAttribute("name"): 删除属性
setTextContent("内容") 设置文本内容
removeChild(node) 删除节点(元素)