XML解析方式

XML网络应用
      DOM(Document Object Model,文档对象模型):它是由W3C定义的独立于语言与平台的XML处理接口规范,并在多种语言中得到了实现。XML文档结构类似于一棵树,而DOM规范正是将XML的树形结构映射到内存中的一个树形的树形结构上。在这棵树上,每个节点对应这XML文档树的一个节点,允许动态操作这个树模型的内容风格和结构。

   

     SAX(Simple API for XML,XML的简单API)提供了一个事件驱动,顺序访问的机制来读取XML文档的内容。与DOM相比,SAX具有更快的处理速度和更低的内存需求,因此他被经常用于各类面向网络的应用。但是,采用SAX机制将比采用DOM接口要求更多的代码,因为它是事件驱动的,需要实现它的回调接口。





XML exam





Java代码 
public class Employee{  
    private long id;  
    private String name;  
    private boolean isMale;  
      
    public Employee(){  
          
    }  
      
    public Employee(long id,String name,boolean isMale){  
        this.id=id;  
        this.name=name;  
        this.isMale=isMale;  
    }  
      
    public long getId() {  
        return id;  
    }  
    public void setId(long id) {  
        this.id = id;  
    }  
    public boolean isMale() {  
        return isMale;  
    }  
    public void setMale(boolean isMale) {  
        this.isMale = isMale;  
    }  
    public String getName() {  
        return name;  
    }  
    public void setName(String name) {  
        this.name = name;  
    }  


public class Employee{
private long id;
private String name;
private boolean isMale;

public Employee(){

}

public Employee(long id,String name,boolean isMale){
this.id=id;
this.name=name;
this.isMale=isMale;
}

public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public boolean isMale() {
return isMale;
}
public void setMale(boolean isMale) {
this.isMale = isMale;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

读写xml文件

Java代码 
import java.io.File;  
import java.io.FileWriter;  
import java.io.IOException;  
import java.util.ArrayList;  
import java.util.Iterator;  
import java.util.List;  
 
import org.dom4j.Attribute;  
import org.dom4j.Document;  
import org.dom4j.DocumentException;  
import org.dom4j.DocumentHelper;  
import org.dom4j.Element;  
import org.dom4j.io.SAXReader;  
import org.dom4j.io.XMLWriter;  
 
/** 
* XML读写示例 
* @author xzy 

*/ 
public class XmlReaderWriter{  
    /** 
     * 读取一个XML文件,返回一个雇员链表 
     * @param fileName 
     * @return 
     */ 
    public List<Employee> readXml(String fileName){  
        List<Employee> employees=new ArrayList<Employee>();  
          
        SAXReader reader = new SAXReader();  
        try {  
            Document  document = reader.read(new File(fileName));  
            Element root = document.getRootElement();  
              
            List nodes = root.elements("employee");  
 
            for (Iterator it = nodes.iterator(); it.hasNext();) {  
                Employee employee=new Employee();  
                  
                // 根节点下的雇员子节点  
                Element employeeElm = (Element) it.next();  
                  
                // 获取雇员子节点的id属性  
                Attribute attribute=employeeElm.attribute("id");  
                employee.setId(Long.parseLong(attribute.getText()));// 将文本形式的long字符串还原成基本类型  
                  
                // 获得雇员子节点的名称子节点  
                Element nameElm=employeeElm.element("name");  
                employee.setName(nameElm.getText());// 获取名称子节点的文字  
                  
                // 获取雇员子节点的性别子节点的文字  
                employee.setMale(Boolean.parseBoolean(employeeElm.element("ismale").getText()));  
                  
                // 将雇员信息放入链表  
                employees.add(employee);  
            }  
              
        } catch (DocumentException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }  
          
          
        return employees;  
    }  
      
    /** 
     * 将一个雇员链表写入XML文档 
     * @param employees 
     * @param fileName 
     */ 
    public void writerToFile(List<Employee> employees,String fileName){  
        // 创建文档对象  
        Document document = DocumentHelper.createDocument();  
        // 创建根节点  
        Element root = document.addElement("employees");  
          
        for(Employee emp:employees){  
            // 创建employee节点  
            Element empElm = root.addElement("employee");  
              
            // 创建employee节点的id属性  
            empElm.addAttribute("id", String.valueOf(emp.getId()));  
              
            // 创建employee节点的子节点name  
            Element nameElm = empElm.addElement("name");  
            nameElm.setText(emp.getName());// 设置子节点的文字  
              
            // 创建employee节点的子节点ismale             
            Element ismaleElm = empElm.addElement("ismale");  
            ismaleElm.setText(String.valueOf(emp.isMale()));// 设置子节点的文字  
        }  
          
        // 将document文档对象写入文件  
        XMLWriter writer;  
        try {  
            writer = new XMLWriter(new FileWriter(fileName));  
            writer.write(document);  
            writer.close();  
                  
        } catch (IOException e) {  
            // TODO Auto-generated catch block  
            e.printStackTrace();  
        }         
    }  
      
    public static void main(String[] args){  
/*      List<Employee> employees=new ArrayList<Employee>(); 
        employees.add(new Employee(1,"Andy",true)); 
        employees.add(new Employee(2,"Bill",false)); 
        employees.add(new Employee(3,"Cindy",true)); 
        employees.add(new Employee(4,"Doutglas",false)); 
         
        XmlReaderWriter xmlReaderWriter=new XmlReaderWriter(); 
        xmlReaderWriter.writerToFile(employees, "Employees.xml");*/ 
          
        XmlReaderWriter xmlReaderWriter=new XmlReaderWriter();  
        List<Employee> employee=xmlReaderWriter.readXml("Employees.xml");  
          
          
    }  

猜你喜欢

转载自20120923lina.iteye.com/blog/1689618