`
xizhenyin
  • 浏览: 51168 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

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

 

 

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文件

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");
		
		
	}
}

 


 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics