Dom4j生成与解析XML

[color=blue]

package meiyx.com;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;

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;

public class XmlUtil {
	/**
	 * 生成 xml 串
	 * <person>
	 * 		<name>meiyx</name>
	 * 		<sex>femail</sex>
	 * 		<age>26</age>
	 * </person>
	 */
	public static String crestePersonXmlStr(){
		//使用 DocumentHelper 类创建一个文档实例。 DocumentHelper 是生成 XML 文档节点的 dom4j API 工厂类。
		Document document=DocumentHelper.createDocument();
		//设置文档实例编码
		document.setXMLEncoding("UTF-8");
		//使用 addComment() 方法添加注释
		document.addComment("A person info");
		//使用 addElement() 方法创建根元素 root 。 addElement() 用于向 XML 文档中增加元素。
		Element root=document.addElement("person");
		 //使用 addAttribute() 方法向 根 元素添加 nationality  属性
		root.addAttribute("nationality ", "China");
		
		Element name=root.addElement("name");
		name.setText("meiyx");
		Element sex=root.addElement("sex");
		sex.setText("femail");
		Element age=root.addElement("age");
		age.setText("26");
		return document.asXML();
	}
	/**
	 * @method description:创建xml文件
	 * @author:meiyx
	 * @date:2011-4-11
	 */
	public static void createXMlFile(){
		//使用 DocumentHelper 类创建一个文档实例。 DocumentHelper 是生成 XML 文档节点的 dom4j API 工厂类。
		Document document=DocumentHelper.createDocument();
		//设置文档实例编码
		document.setXMLEncoding("UTF-8");
		//使用 addComment() 方法添加注释
		document.addComment("A person info");
		//使用 addElement() 方法创建根元素 root 。 addElement() 用于向 XML 文档中增加元素。
		Element root=document.addElement("person");
		 //使用 addAttribute() 方法向 根 元素添加 nationality  属性
		root.addAttribute("nationality ", "China");
		
		Element name=root.addElement("name");
		name.setText("meiyx");
		Element sex=root.addElement("sex");
		sex.setText("femail");
		Element age=root.addElement("age");
		age.setText("26");
		try {
			XMLWriter out=new XMLWriter(
					new FileWriter(new File("C:/person.xml")));
			out.write(document);
			out.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	/**
	 * @method description:通过给定的XMl串解析成Person对象
	 * @author:meiyx
	 * @date:2011-4-11
	 * @param person
	 * @return
	 */
	
	public static Person parseXMlStrToObject(){
		String person=crestePersonXmlStr();
		Person p=new Person();
		try {
			Document document = DocumentHelper.parseText(person);
			Element root=document.getRootElement();
			Iterator it=root.elementIterator();
			//while(it.hasNext()){
				Element element=(Element) it.next();
			/*	if(element.getName().equals("name")){
					p.setName(element.getText().trim());
				}else if(element.getName().equals("sex")){
					p.setSex(element.getTextTrim());
				}else if(element.getName().equals("age")){
					p.setAge(Integer.parseInt(element.getTextTrim()));
				}*/
				//这两种做法都ok
				p.setName(root.element("name").getTextTrim());
				p.setSex(root.element("sex").getTextTrim());
				p.setAge(Integer.parseInt(root.element("age").getTextTrim()));
			//}
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return p;
	}
	/**
	 * @method description:把给定的XMl文件接解析成Person对象
	 * @author:meiyx
	 * @date:2011-4-11
	 * @param inputXml
	 * @return
	 */
	public static Person parseXMlFileToObject(File inputXml){
		//File inputXml=new File("C:\\person.xml");
		Person p=new Person();
		try {
			SAXReader saxReader = new SAXReader();
			Document document = saxReader.read(inputXml);
			Element root=document.getRootElement();
			Iterator it=root.elementIterator();
			while(it.hasNext()){
				Element element=(Element) it.next();
				if(element.getName().equals("name")){
					p.setName(element.getText().trim());
				}else if(element.getName().equals("sex")){
					p.setSex(element.getTextTrim());
				}else if(element.getName().equals("age")){
					p.setAge(Integer.parseInt(element.getTextTrim()));
				}
				
			}
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return p;
	}
	public static void main(String args[]){
		System.out.println(parseXMlStrToObject().getName());
		
	}
}


[/color]

你可能感兴趣的:(C++,c,xml,C#)