java 生成 解析XML 文件 Dom4J

首先先看一下我们的XML文档结构,一下的文档结构是由一对<list>标签包含,其中一组<ErrorID>包含了两个标签<ErrorCode>跟<ErrorMsg>,其中<ErrorCode>可以看成是key,

<ErrorMsg>可以看成是value。这样的话就可以通过<ErrorCode>的值来拿到<ErrorMsg>的值。

<?xml version="1.0" encoding="UTF-8"?>
<list>
	<ErrorID id="1">
		<ErrorCode>00000</ErrorCode>
		<ErrorMsg>成功</ErrorMsg>
	</ErrorID>
	<ErrorID id="2">
		<ErrorCode>00001</ErrorCode>
		<ErrorMsg>处理失败</ErrorMsg>
	</ErrorID>
	<ErrorID id="3">
		<ErrorCode>00002</ErrorCode>
		<ErrorMsg>用户原密码不正确!</ErrorMsg>
	</ErrorID>
	<ErrorID id="4">
		<ErrorCode>00003</ErrorCode>
		<ErrorMsg>网络原因,推送失败!</ErrorMsg>
	</ErrorID>
	<ErrorID id="5">
		<ErrorCode>00004</ErrorCode>
		<ErrorMsg>其他原因!</ErrorMsg>
<pre name="code" class="html">        </ErrorID>
</list>
 看完文档结构,以下是生成该XML文档的java类 
 
package cn.com.sinosoft.sfjy.util;

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

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;

import cn.com.sinosoft.sfjy.vo.ErrorVo;

public class TestWriteXMLDemo {
	public static void main(String[] args) {
		List<ErrorVo> ErrorVoList = new ArrayList<ErrorVo>();
		
		ErrorVoList.add(new ErrorVo("1","00000", "成功"));
		ErrorVoList.add(new ErrorVo("2","00001", "处理失败"));
		ErrorVoList.add(new ErrorVo("3","00002", "用户原密码不正确!"));;
		ErrorVoList.add(new ErrorVo("5","00003", "网络原因,推送失败!"));
		ErrorVoList.add(new ErrorVo("8","00004", "其他原因!"));

		Document doc = DocumentHelper.createDocument();

		Element root = doc.addElement("list");
		
		for(ErrorVo ErrorVo : ErrorVoList){
			//根节点
			Element idEle = root.addElement("ErrorID");
			//ErrorVoID下的元素
			Element codeEle = idEle.addElement("ErrorCode");
			codeEle.addText(ErrorVo.getErrorCode());
			Element msgEle = idEle.addElement("ErrorMsg");
			msgEle.addText(ErrorVo.getErrorMsg());
			//给ErrorVoID加值
			idEle.addAttribute("id", ErrorVo.getErrorID()+"");	
		}
		try {
			XMLWriter writer = new XMLWriter();
			
			FileOutputStream fos = new FileOutputStream("TEST.xml");
			
			writer.setOutputStream(fos);
			
			writer.write(doc);
			
			writer.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

接下来是Dom4J解析XML文件的java类,可以通过<ErrorCode>获取到<ErrorMsg>的方法

package cn.com.sinosoft.sfjy.util;

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

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

public class TestParserXMLDemo {
	public String Test(String errorcode) {
		try{
			SAXReader reader = new SAXReader();
//			String path = 注意路徑的位置 
			Document doc = reader.read(new File("TEST.xml"));
			
			Element root = doc.getRootElement();
			List<Element> elements = root.elements();
			for(Element ele : elements){
				//解析
				Element codeEle = ele.element("ErrorCode");

				String errorCode = codeEle.getText();
				
				Element msgEle = ele.element("ErrorMsg");
				
				String errorMsg = msgEle.getText();
				
				if(errorcode.equals(errorCode)){
					return errorMsg;
				}
			}
			
		}catch(Exception e){
			e.printStackTrace();
		}
		return "";
	}
	public static void main(String[] args) {
		TestParserXMLDemo t1 = new TestParserXMLDemo();
		System.out.println(t1.Test("00000"));
	}
}


你可能感兴趣的:(xml,dom)