java之XML

javaXML:

    1.读XML文件:代码

package qqq;

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.List;

import org.dom4j.*;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

class testdom4j {
	public static void main(String[] args) {
		/*
		 * 解析emplist实例存入list集合中
		 * 1.创建SAXreader
		 * 2.使用SAXReader读取xml文档并返回Document对象
		 *3.根据Document对象获取根元素
		 *4.按照xml结构从跟元素开始逐渐获取子元素以达到遍历xml的目的
		 */
		try {
			SAXReader reader = new SAXReader();
			Document doc = reader.read(new FileInputStream("newxml.xml"));
			/*
			 * 获取跟元素
			 * Element的每个实例用于表示xml文档中的一个元素(标签) 
			 * 这里相当与《list》标签
			 */
			Element root = doc.getRootElement();
			/*
			 * Elemnet获取元素的方法
			 * 
			 * String getName获取当前标签的名字
			 * List elements获取当前标签的子标签
			 * List elements(String name) 获取当前标签下的同名标签
			 * Element elements(String name) 获取指定名字的子标签
			 * Atttribute attribute(String name) 获取当前标签的属性
			 * String getText(); 获取标签中的文本
			 */
			List<Emp> emplist = new ArrayList<Emp>();
			List<Element> elements = root.elements();
			/*
			 * 遍历所有《emp》标签并解析出该员工的相关信息以Emp实例保存并存储在emplist集合中
			 */
			for(Element empEle : elements) {
				//获取名字
				Element nameEle = empEle.element("name");
				String name = nameEle.getTextTrim();
				System.out.println(name);
				//获取年龄
				Element ageEle = empEle.element("age");
				int age = Integer.parseInt(ageEle.getTextTrim());
				//获取性别
				Element genderEle = empEle.element("gender");
				String gender = genderEle.getTextTrim();
				//获取工资(薪水)
				Element salaryEle = empEle.element("salary");
				int salary = Integer.parseInt(salaryEle.getTextTrim());
				//获取id
				Attribute attr = empEle.attribute("id");
				String attr_name = attr.getName();
				int id = Integer.parseInt(attr.getValue());
				Emp emp = new Emp(id,name,age,gender,salary);
				emplist.add(emp);
			}
			System.out.println("解析完毕!");
			System.out.println("共"+emplist.size()+"个成员");
			for(Emp emp : emplist) {
				System.out.println(emp);
			}
		}
		catch (Exception e){
			e.printStackTrace();
		}
		
	}
}    
2.写入XML文件:
package qqq;

import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;

import org.dom4j.*;
import org.dom4j.DocumentHelper;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;

class writeXml {
	public static void main(String[] args) {
		List<Emp> emplist = new ArrayList<Emp>();
		emplist.add(new Emp(1, "zs", 17, "nan", 8000));
		emplist.add(new Emp(2, "zs", 17, "nan", 8000));
		emplist.add(new Emp(3, "zs", 17, "nan", 8000));
		emplist.add(new Emp(4, "zs", 17, "nan", 8000));
		/*
		 * 1.创建一个Document对象表示一个空的xml文档 2.添加根元素 3.按照生成的西米露格式添加子元素
		 * 4.创建xmlWriter将Document写出
		 */
		XMLWriter writer = null;
		try {
			// 1
			Document document = DocumentHelper.createDocument();
			/*
			 * 2添加list标签 Element addElement(String name)返回Element实例 该方法只能调一次,文档中只能有一个根元素
			 */
			Element root = document.addElement("list");
			// 3将emplist集合中的每个成员以一个《emp》标签存到《list》标签中
			for (Emp emp : emplist) {
				/*
				 * Element addElement(String name) 向当前标签中添加给定名字的子标签并返回
				 * 
				 * Element addText(String text); 向当前标签中添加文本返回值为当前标签
				 * 
				 * Element addAttribute(String name,String value) 向当前标签添加属性和文本返回值为当前标签
				 */
				// 向根标签《list》 添加子标签《emp》
				Element empEle = root.addElement("emp");
				// 向《emp》 标签中添加《name》
				Element nameEle = empEle.addElement("name");
				nameEle.addText(emp.getName());
				// 添加gender
				Element genderEle = empEle.addElement("gender");
				genderEle.addText(emp.getGender());
				// 添加age
				Element ageEle = empEle.addElement("age");
				ageEle.addText(emp.getAge() + "");
				// 添加salary
				Element salatyEle = empEle.addElement("salary");
				salatyEle.addText(emp.getSalary() + "");
				empEle.addAttribute("id", emp.getId() + "");
			}
			FileOutputStream fos = new FileOutputStream("myemp.xml");
			writer = new XMLWriter(fos,OutputFormat.createCompactFormat());
			writer.write(document);
			System.out.println("secceseful");
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			if (writer != null) {
				try {
					writer.close();
				} catch (Exception e2) {
					e2.printStackTrace();
				}
			}
		}
	}
}

3.使用Xpath读XML 

package qqq;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Xpathdemo {
	public static void main(String[] args) {
		try {
			SAXReader reader = new SAXReader();
			Document doc = reader.read(new FileInputStream("newxml.xml"));
			String xpath = "/list/emp[salary>4000]/name";
			List<Element> list = doc.selectNodes(xpath);
			for(Element ele : list) {
				System.out.println(ele.getName()+""+ele.getText());
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}


猜你喜欢

转载自blog.csdn.net/weixin_41182987/article/details/79511544