XML语法 创建文档!~~!


创建文档:

		Document doc = DocumentHelper.createDocument();


创建节点:

//创建根节点
		Element root = doc.addElement("persons");
		
		

创建子节点并且给子节点添加属性:

for (person pl : pList ){
		
			//创建学生并且将学号这个属性赋给person这个属性  ! 赋值两个属性  所以addAttribute()两次
			
		root.addElement("person").addAttribute("stuno",pl.getId() + "").addAttribute("gender", pl.getGender());
		
		
		}

将文档对象写入到XML文件中 利用 输出流 FileOutputStream();

//创建文件输出流
			out = new FileOutputStream("src/students.xml");
			
			//创建格式化的对象
			OutputFormat of = OutputFormat.createPrettyPrint();
			
			//创建XML写出文件的对象
			xw = new XMLWriter(out,of);
			//把 文档对象写入XML文件
			xw.write(doc);

在person下创建 name ,age,address 元素 并给他们加上值!

Element ageElement  = childElement.addElement("age").addText(pl.getAge()+"");
Element nameElement  = childElement.addElement("name").addText(pl.getName());
Element addressElement  = childElement.addElement("address").addText(pl.getAddress());
			

addElement();  添加元素

addText(); 元素中间添加内容

root.addAttribute("stuno", "1");  添加属性!


写入学生 和删除学生的代码!


package cn.dom4j;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class Hkk {
	public static void main(String[] args) {
		
		//创建学生XML文档
		creatXML();
		
		//删除学生
		//delteXML(1);
	}
	
	public static void creatXML(){
		//创建学生集合
		/*
		 * nteger age, String address, String name, String gender,
			Integer id
		 */
		
		List<person> pList = new ArrayList<person>();
		
		for(int i = 0; i < 10 ; i++){
			
			person p = new person(28,"地球","学生" + i, "男" ,i );
			
			pList.add(p);
			
		}
		
		Document doc = DocumentHelper.createDocument();
		//创建根节点
		Element root = doc.addElement("persons");
		
		for (person pl : pList ){
		
			//创建学生并且将学号这个属性赋给person这个属性  ! 赋值两个属性  所以addAttribute()两次
			
			Element childElement = root.addElement("person")
							.addAttribute("stuno",pl.getId() + "")
							.addAttribute("gender", pl.getGender());
			//Element nameElement  = childElement.addElement("name", pl.getName());
			//Element addressElement  = childElement.addElement("address", pl.getAddress());
			//Element ageElement  = childElement.addElement("name", pl.getAge()+"");
			Element ageElement  = childElement.addElement("age").addText(pl.getAge()+"");
			Element nameElement  = childElement.addElement("name").addText(pl.getName());
			Element addressElement  = childElement.addElement("address").addText(pl.getAddress());
			root.addAttribute("stuno", "1");
			
			
			
			
		}
		FileOutputStream out = null;
		
		XMLWriter xw = null;
		try {
			//创建文件输出流
			out = new FileOutputStream("src/students.xml");
			
			//创建格式化的对象
			OutputFormat of = OutputFormat.createPrettyPrint();
			
			//创建XML写出文件的对象
			xw = new XMLWriter(out,of);
			//把 文档对象写入XML文件
			xw.write(doc);
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
				try {
					if(xw != null){
						xw.close();
					}
					if(out != null){
					out.close();
					}
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
	}
	
	public static void delteXML(int stuNo){
		//创建SAXReader对象

		SAXReader reader = new SAXReader();
		XMLWriter xw = null;
		FileOutputStream out = null;
		//创建输入流
		FileInputStream in = null;
		try {
			in = new FileInputStream("src/students.xml");
			//读取文档  以字节流的方式  
			Document doc = reader.read(in);
			//获取根元素
			Element root = doc.getRootElement();
			//获取子元素  所有的子元素组成一个集合
			List<Element> pList = root.elements();
			for(Element ele : pList){
				
				//取出子元素并拿到他们的属性   id是属性
				
				String eVal = ele.attributeValue("stuno");
				int eVal1 = new Integer(eVal);
				
				/*
				 * 判断输入的学号是否和找到的学号相同,如果相同就删除有这个学号属性的元素
				 * */
				if(stuNo == eVal1){
					Element rootElement = ele.getParent();
					//移除这个元素  或者说节点
					
					rootElement.remove(ele);
					//挑出循环
					break;
				}
			}
			
			/*
			 * 在将文档写回到xml
			 */
			//定义字节输出流
			out = new FileOutputStream("src/students.xml");
			//定义文档写出流
			xw = new XMLWriter(out);
			xw.write(doc);
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
				try {
					if(xw != null){
						xw.close();
					}
					if(out != null){
						out.close();
					}
					if(in != null){
						in.close();
					}
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
		}
	}
}


































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值