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的時候內心真的是絕望啊!!!!!!!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM