html比xml产生的早些,发展也很不错。但是html有着2个缺点,是xml曾经想要替代的。
就是标记语法不是很严格,有时候难以判断,造成长时间的等待。还有就是厂商众多,导致语言不太统一,各有特点。给编程者带来一些麻烦。
xml这些方面来说,一是语法更加严格,要求标记有开始必有结束,除非是单标记。只能有一个根元素。并且必须有正确嵌套。
还有xml可以扩展。允许用户自定义一些自己的标记。但是需要提供解释文档。以便浏览器可以正确的解析。常用的有dtd文档和schema
一、用途
xml现在常用作网络配置文件,在数据交换和结构化存储及显示方面有着很广泛的应用。另外就是配置文件。
二、组成
xml有两部分组成:
1.序言
包括一下几个部分
声明:<?xml version="1.0" encoding= "UTF-8"?>
注释:<!-- 注释 -->
样式说明::<?xml sytlesheet="******" ?>
空白:
描述文档:系统文件<!DOCTYPE 根元素名称 SYSTEM "dtd文件路径">
网络资源<!DOCTYPE 根元素名称 PUBLIC "网络dtd文件url">
内置定义<!DOCTYPE 根元素名称 【里面直接定义dtd文件内容】>
2.文档元素
xml文档元素包括 元素和属性
<!ELEMENT 元素名称 (子元素列表)>
子元素后面可以跟这些修饰符:?0或1次,+1或多次,*0或多次。“,”表示元素的顺序。()表示元素分组,|表示选其中一个。
如果元素后面没有嵌套的子元素时,可以用#PCDATA来表示含有文本描述。EMPTY表示元素无任何文本描述。
<!ATTLIST 属性名称
属性名称 数据类型 约束
CDATA字符串 #REQURED 必须选择填写
ID唯一不能重复 #IMPLIED 可以选择
IDREF 引用其他ID #Defualtvalue 默认值
>
三、解析
解析技术分为2种:
一个是进行校验的处理器;
一个是不进行校验的处理器;
java中常用的2种API 是
DOM :小文件可以反复查询,可以修改和排序,还能与其他程序在内存中共享,因为它是将文件全部加载到内存中进行处理。是文档树的模型,可以显示的处理。
SAX:适用于大型文件的一次性 选择性的扫描。 它是事件触发模型。只有扫描到需求的内容时,才会产生事件,可以忽略不关心的部分。
DOM和SAX的实现方法有
JAXP,JDOM,DOM4J3种
DOM4J 简单易用,适合处理小型的文档。使用了java集合框架。
列子:
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class MyXML {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
SAXReader saxreader = new SAXReader();
try {
Document document = saxreader.read("homework.xml");
List list = document.selectNodes("//tanks/tank/name");
for(Object obj:list){
Element ele = (Element) obj;
System.out.println(ele.getText());
}
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if(saxreader != null){
}
}
}
}