什么是XML?

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,数据,dom,数据解析)