论坛首页 Java企业应用论坛

Review - Dom4j学习笔记(二)

浏览 5839 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-11-11   最后修改:2008-11-18

SAXReader的使用

 

下午写的东西,还在慢慢学习中。(因为是JAVA菜鸟,代码写的很差,见谅,学习中)

 

1.已有的xml文件 File.xml

<?xml version="1.0" encoding="UTF-8"?>
<p:mapping xmlns:p="http://www.easyweb.com/mapping" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<table name="file">
	<field name="name" type="java.lang.String" length="20" isPrimaryKey="true"/>
	<field name="price" type="java.lang.Float" length="10" scale="2"/>
	<field name="date" type="java.util.Date"/>
</table>
</p:mapping>

 简单的一个小xml文件

 

2.工具类Table和Field

public class Table {
	private String tableName;
	private Map<String, Field> fieldsMap = new HashMap<String, Field>();
//get set 省略。。。。
}

 

public class Field {
	private String name;
	private String type;
	private boolean isPrimaryKey;
	private int length;
	private int scale;
//get set方法省略。。。
}

 

3.用SAXReader解析xml文件的一个方法,getTables()

public List<Table> getTables(String fileURL) {
		List<Table> tables = new ArrayList<Table>();
		SAXReader reader = new SAXReader();
		try {
			InputStream inputStream = this.getClass().getResourceAsStream("File.xml");//查找具有给定名称的资源
			Document document = reader.read(inputStream);
			Element root = document.getRootElement();//获取根元素
			for (Iterator<Element> iterator = root.elementIterator("table"); iterator
					.hasNext();) {
				Table table = new Table();
				Element tableElement = iterator.next();//迭代xml文件中“table”元素
				table.setTableName(tableElement.attributeValue("name"));//设置属性参数
				Map<String, Field> fields = table.getFieldsMap();
				for (Iterator<Element> fitrator = tableElement
						.elementIterator("field"); fitrator.hasNext();) {
					Field field = new Field();
					Element fieldElement = fitrator.next();//迭代xml文件中“field”元素
					field.setName(fieldElement.attributeValue("name"));
					field.setType(fieldElement.attributeValue("type"));//设置属性参数
					
					try {
						field.setLength(Integer.parseInt(fieldElement
								.attributeValue("length")));
						field.setScale(Integer.parseInt(fieldElement
								.attributeValue("scale")));
					} catch (Exception e) {
						
					}
					field.setPrimriKey(Boolean.parseBoolean(fieldElement
							.attributeValue("isPrimaryKey")));
					fields.put(field.getName(), field);
				}
				tables.add(table);
			}
			return tables;
		} catch (Exception e) {
			throw new Exception(e);
		}
	}

 其他代码略。

这就是一个简单的已有xml文件,用SAXReader解析的例子。高手请指教。

   发表时间:2008-12-26  
有几个小错误
0 请登录后投票
   发表时间:2008-12-26  
这种需求java自带的saxparser也可以达到,代码复杂度近似
SaxReader有独立使用的必要么..
0 请登录后投票
   发表时间:2008-12-29  
oxromantic 写道

这种需求java自带的saxparser也可以达到,代码复杂度近似SaxReader有独立使用的必要么..

我只是为了熟悉dom4j 里面SaxReader方法才写的小例子,代码确实烦琐,谢谢
0 请登录后投票
   发表时间:2009-07-27  
DOM4J 效率高
0 请登录后投票
   发表时间:2009-07-27  
还是更喜欢用JDOM
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics