dom4j解析xml时报出文件提前结束

在写javaweb小项目的时候,用dom4j解析xml报出如下错误:

org.dom4j.DocumentException:Error    .......    Nested exception: 文件提前结束。

 1 package com.miragic.utils;
 2 
 3 import java.io.FileNotFoundException;
 4 import java.io.FileOutputStream;
 5 
 6 import java.io.UnsupportedEncodingException;
 7 
 8 import org.dom4j.Document;
 9 import org.dom4j.DocumentException;
10 import org.dom4j.io.OutputFormat;
11 import org.dom4j.io.SAXReader;
12 import org.dom4j.io.XMLWriter;
13 
14 //操作XML文件的方法
15 public class JaxpUtils {
16 
17     static String path;
18     
19     static {
20         path=JaxpUtils.class.getClassLoader().getResource("users.xml").getPath();
21                 
22     }
23         public static Document getDocument() {
24             //创建一个dom4j解析器
25             try {
26                 SAXReader reader=new SAXReader();
27                 Document document=reader.read(path);
28                 return document;
29             } catch (DocumentException e) {
30                 // TODO Auto-generated catch block
31                 e.printStackTrace();
32             }        
33             return null;
34         }
35         
36         public static void write2xml(Document document) {
37             
38             try {
39                 XMLWriter writer=new XMLWriter(new FileOutputStream(path),OutputFormat.createPrettyPrint());
40                 
41             } catch (UnsupportedEncodingException e) {
42                 // TODO Auto-generated catch block
43                 e.printStackTrace();
44             } catch (FileNotFoundException e) {
45                 // TODO Auto-generated catch block
46                 e.printStackTrace();
47             }
48             
49         }
50         
51 }

百度了好久,有的说是xml没有根目录,有的说是xml格式不对,然后我检查了xml格式并且重写了好几次,但都木有用,以下为xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<users>
	<user username="miragic" password="000000" email="469548329@qq.com" birthday="1997-2-1" ></user>
</users>

  同时,还排除了一下编码的错误,并没有发现异常.

错误原因:解析xml没有关流

解决方法:

package com.miragic.utils;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

//操作XML文件的方法
public class JaxpUtils {

	static String path;
	
	static {
		path=JaxpUtils.class.getClassLoader().getResource("users.xml").getPath();
		
		
	}
	
	
		//private static Document document;

		public static Document getDocument() {
			//创建一个dom4j解析器
			try {
				SAXReader reader=new SAXReader();
				Document document=reader.read(path);
				return document;
			} catch (DocumentException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}		
			return null;
		}
		
		public static void write2xml(Document document) {
			
			try {
				XMLWriter writer=new XMLWriter(new FileOutputStream(path),OutputFormat.createPrettyPrint());
				writer.write(document) ;
				writer.close() ;
			} catch (UnsupportedEncodingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (FileNotFoundException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}catch(IOException e) {
				e.printStackTrace();
			}
			
		}
		
		
		
		
}

  加了两行

writer.write(document);

writer.close();

问题解决.

总结:一个简单的小错误,说白了还是理解的不够透彻导致写代码的时候丢三落四,好歹问题解决了,找bug的时候内心真的是绝望啊!!!!!!!

 

posted @ 2018-02-28 21:38  Miragic  阅读(6172)  评论(0编辑  收藏  举报