dom4j输入xml文档与解析xml文档

书写xml文档

try {
			List list=new ArrayList();
			list.add(new Student(1,"张三",25,"男",8000));
			list.add(new Student(2,"李斯",26,"女",9000));
			list.add(new Student(3,"王五",24,"男",6000));
			list.add(new Student(4,"赵六",24,"女",8000));
			list.add(new Student(5,"李八",24,"男",4500));
			System.out.println(list);
			
			
			//1.先创建空白的文档
			Document doc=DocumentHelper.createDocument();
			//2.向doc中添加根元素       目前還未寫入空白文檔任何東西,因爲還沒有建立文件輸出流進行操作
			Element root=doc.addElement("list");   //必须先添加list根
			//3.逐级添加子级别的标签
			//那么就是遍历每一个Student实例,然后每个实例写入标签。注意,遍历的是Student的实例
			for(Student stu:list) {
				//添加student标签
				Element stuEle=root.addElement("student");
				//添加标签
				Element nameEle=stuEle.addElement("name");
				//在标签中添加文本
				nameEle.addText(stu.getName());
				
				//下面的同法,是student标签下包含的其他标签或者属性
				Element ageEle=stuEle.addElement("age");
				ageEle.addText(String.valueOf(stu.getAge()));
				
				Element genderEle=stuEle.addElement("gender");
				genderEle.addText(stu.getGender());
				
				Element salaryEle=stuEle.addElement("salary");
				salaryEle.addText(String.valueOf(stu.getSalary()));
				
				//添加id属性
				stuEle.addAttribute("id",String.valueOf(stu.getId()));		
			}
			/**
			 * 到这一步,目前将所有的Student实例都添加到了doc中,但是还未生成文件
			 */
			//4.建立输出流
			FileOutputStream fos=new FileOutputStream("student.xml");
			XMLWriter writer=new XMLWriter(fos,OutputFormat.createPrettyPrint());
			//然后写出就可以了                                        可以自動有行的縮進
			writer.write(doc);
			System.out.println("写出完毕!");
			writer.close();
			
			
			
		}catch(Exception e) {
			e.printStackTrace();
		}

解析xml文档

try {
		SAXReader reader=new SAXReader();
		Document doc=reader.read(new FileInputStream("student.xml"));
		
		Element root=doc.getRootElement();
		System.out.println("根元素为:"+root.getName());
		
		//1.先获取根元素下面的所有子标签
		List stuList=root.elements();
		System.out.println("一共获取了"+stuList.size()+"个标签");
		
		//2.保存所有的信息
		Listlist=new ArrayList();
		
		//3.将student实例传入list集合
		for(Element stuEle:stuList) {
			Element nameEle=stuEle.element("name");//将student标签里的name标签找出来了
			String name=nameEle.getText();
			System.out.println("姓名为:"+name);
			
			Element ageEle=stuEle.element("age");
			int age=Integer.parseInt(ageEle.getText());
			System.out.println("年龄为:"+age);
			
			Element genderEle=stuEle.element("gender");
			String gender=genderEle.getText();
			System.out.println(gender);
			
			Element salaryEle=stuEle.element("salary");
			int salary=Integer.parseInt(salaryEle.getText());
			System.out.println("薪酬为:"+salary);
			
			//获取id属性
			int id=Integer.parseInt(stuEle.attributeValue("id"));
			
			Student stu=new Student(id,name,age,gender,salary);
			list.add(stu);
		}
		System.out.println("解析完毕!");
		for(Student s:list) {
			System.out.println(s);
		}
	}catch(Exception e) {
		e.printStackTrace();
	}

 

你可能感兴趣的:(Java)