dom4j解析XML实例

其中要导入的包为

dom4j-1.6.1.jar

jaxen-1.1-beta-6.jar

<span style="white-space:pre">	</span>/**
	 * 实现添加用户信息到数据库(XML)中
	 */
	public void add(User user) {
		/**
		 * dom4j来解析XML
		 * 其中该user.xml格式为
		 * <users>
		 * 		<user username="张三" password="123"/>
	     <span style="white-space:pre">	</span> * 		<user username="王五" password="333"/>
		 * </users>
		 */
		SAXReader reader = new SAXReader();
		try {
			String path = "user.xml";
			Document doc = reader.read(path);
			// 得到根元素
			Element root = doc.getRootElement();
			// 通过根元素创建新元素,addElement表示已经附属于root了,就不用root.add(ele)这句话了
			Element ele = root.addElement("user");
			// 添加属性
			ele.addAttribute("username", user.getUsername());
			ele.addAttribute("password", user.getPassword());
			/**
			 * 回写文档,这一块格外重要
			 */
			// 创建格式化输出器
			/**
			 * 首先我们要知道,不带true参数的输出流构造都是重写
			 * new FileOutputStream(path):这是重写
			 * new FileOutputStream(path,true)这是往后添加
			 * 这里‘输出化格式器’的意思就是
			 * 1.要处理的内容一开始必须清空所有换行和缩进,形成所有内容在一行的形式
			 * 2.再把要处理的内容按照制表符上下层标签递进,并且上下层要换行
			 */
			OutputFormat format = new OutputFormat("\t", true);// 用制表符分割,标签之间需要换行
			format.setTrimText(true);// 清空原有换行和缩进
			// 创建XMLWriter
			XMLWriter writer;
			try {
				/**
				 * 解释一下:本来是可以用FileWriter这个类的即
				 * writer = new XMLWriter(new FileWriter(path), "UTF-8"), format);
				 * 但是因为FileWriter这个类设计时没有给予处理编码的方法
				 * 所以只有用OutputStreamWriter来设置编码了
				 * 
				 */
				writer = new XMLWriter(new OutputStreamWriter(
						new FileOutputStream(path), "UTF-8"), format);
				writer.write(doc);
				writer.close();
			} catch (Exception e1) {
				// TODO Auto-generated catch block
				throw new RuntimeException();
			}
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			throw new RuntimeException();
		}

	}


 

猜你喜欢

转载自blog.csdn.net/lyandyhk/article/details/50790575