XML
可扩展标记语言。
通常所说的XML,就是指XML数据解析,是将数据文档解析成不同的格式。因为不同平台(软件)在做数据传递或数据文档共享的时候,同一数据文档可能在不同平台的 显示格式要求不同,这就出现了相对中立的语言(XML),来表示数据,给二者做转化。
常用的XML解析方式及各自特征
一:DOM(dom4,这种是标准的方式) 文档对象模型
各步细节详细
加载整个文档[要做全局查找],才能开始解析
节点(节点都需要自己创建)
Element元素节点
Text文本节点
Attr属性节点
二.simple XML
三:SAX
Simple API for XML
占内存小,难理解
加载一部分,解析一部分
顺序读取文档,事件处理模型
1.文档开始
2.元素
3.文本
4.文本结束
5.元素结束 不停的 触发事件,直到文档结束。
解析方式详细说明
一.DOM(dom4,标准)-->DOM文档对象模型 (根节点)树形结构展开
1.创建document
Document document =DocumentBuilderFactory //创建了一个工厂
.newInstance() //new 一个实例
.newDocumentBuilder()
.newDocument();//创建了一个文档对象
//创建root节点
Element root = document.createElement("person-list");
for(Person p : list){
Element person = document.createElement("person");//创建 person子节点,加在根节点上
Attr attr= document.createAttribute("id");//创建属性节点
attr.setValue(String.valueOf(p.getId()));//属性id获取到值
person.setAttributeNode(attr);//person子节点 设置属性
//创建子节点的 子元素
Element name = document.createElement("name");
Element age = document.createElement("age");
person.appendChild(name); //子节点添加 子元素
person.appendChild(age);
//标准)——创建文本节点,设置name值
Text text= document.createTextNode(p.getName());
name.appendChild(text);
//简化
age.setTextContent(String.valueOf(p.getAge()));
root.appendChild(person);//向root追加person子节点
}
document.appendChild(root);//文档追加根root
//把DOM写到XML文件中(需要借助格式转换工厂TransformerFactory)
TransformerFactory factory =TransformerFactory.newInstance();
Transformer transformer=factory.newTransformer();
//源new DOMSource(document)
//结果--输出
File file=new File("book.xml");
StreamResult result=new StreamResult(file);
transformer.transform(new DOMSource(document), result);//将第一个参数[文件-源],转化到result
二.simple XML
&&借助--Persister persister = new Persister();&&
1.读取文件
Persister persister = new Persister();
File file = new File("d:\\work.xml");//将 待读文件生成对象
try { //将 待读文件对象,转成Booklist.class格式,并将读取的内容 赋给Booklist list
Booklist list=persister.read(Booklist.class, file);
for (Book book : list.getList()) {
System.out.println(book);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//读取文件 内的isbn,传给private String isdn;
@Element(name="isbn",required=false) //此处name就是给 对象属性isdb取别名
private String isdn;
三.SAX(java内嵌的)
Simple API for XML
顺序读取文档,事件处理模型
1.文档开始 startDocument()
2.元素开始 startElement(String arg0, String arg1, String arg2,Attributes arg3)
3.文本characters(char[] arg0, int arg1, int arg2)
4.文本结束 endDocument()
5.元素结束 endElement
加载文档时,遇到不同标签,自动触发不同的事件,自动调用相应的5种处理方法(方法的具体实现自己编写),直到文档结束。
可扩展标记语言。
通常所说的XML,就是指XML数据解析,是将数据文档解析成不同的格式。因为不同平台(软件)在做数据传递或数据文档共享的时候,同一数据文档可能在不同平台的 显示格式要求不同,这就出现了相对中立的语言(XML),来表示数据,给二者做转化。
常用的XML解析方式及各自特征
一:DOM(dom4,这种是标准的方式) 文档对象模型
各步细节详细
加载整个文档[要做全局查找],才能开始解析
节点(节点都需要自己创建)
Element元素节点
Text文本节点
Attr属性节点
二.simple XML
三:SAX
Simple API for XML
占内存小,难理解
加载一部分,解析一部分
顺序读取文档,事件处理模型
1.文档开始
2.元素
3.文本
4.文本结束
5.元素结束 不停的 触发事件,直到文档结束。
解析方式详细说明
一.DOM(dom4,标准)-->DOM文档对象模型 (根节点)树形结构展开
1.创建document
Document document =DocumentBuilderFactory //创建了一个工厂
.newInstance() //new 一个实例
.newDocumentBuilder()
.newDocument();//创建了一个文档对象
//创建root节点
Element root = document.createElement("person-list");
for(Person p : list){
Element person = document.createElement("person");//创建 person子节点,加在根节点上
Attr attr= document.createAttribute("id");//创建属性节点
attr.setValue(String.valueOf(p.getId()));//属性id获取到值
person.setAttributeNode(attr);//person子节点 设置属性
//创建子节点的 子元素
Element name = document.createElement("name");
Element age = document.createElement("age");
person.appendChild(name); //子节点添加 子元素
person.appendChild(age);
//标准)——创建文本节点,设置name值
Text text= document.createTextNode(p.getName());
name.appendChild(text);
//简化
age.setTextContent(String.valueOf(p.getAge()));
root.appendChild(person);//向root追加person子节点
}
document.appendChild(root);//文档追加根root
//把DOM写到XML文件中(需要借助格式转换工厂TransformerFactory)
TransformerFactory factory =TransformerFactory.newInstance();
Transformer transformer=factory.newTransformer();
//源new DOMSource(document)
//结果--输出
File file=new File("book.xml");
StreamResult result=new StreamResult(file);
transformer.transform(new DOMSource(document), result);//将第一个参数[文件-源],转化到result
二.simple XML
&&借助--Persister persister = new Persister();&&
1.读取文件
Persister persister = new Persister();
File file = new File("d:\\work.xml");//将 待读文件生成对象
try { //将 待读文件对象,转成Booklist.class格式,并将读取的内容 赋给Booklist list
Booklist list=persister.read(Booklist.class, file);
for (Book book : list.getList()) {
System.out.println(book);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//读取文件 内的isbn,传给private String isdn;
@Element(name="isbn",required=false) //此处name就是给 对象属性isdb取别名
private String isdn;
三.SAX(java内嵌的)
Simple API for XML
顺序读取文档,事件处理模型
1.文档开始 startDocument()
2.元素开始 startElement(String arg0, String arg1, String arg2,Attributes arg3)
3.文本characters(char[] arg0, int arg1, int arg2)
4.文本结束 endDocument()
5.元素结束 endElement
加载文档时,遇到不同标签,自动触发不同的事件,自动调用相应的5种处理方法(方法的具体实现自己编写),直到文档结束。