欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

XML解析方式

程序员文章站 2022-06-05 18:45:43
...

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

 


 

相关标签: XML 网络应用