Review - Dom4j学习笔记(二)

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解析的例子。高手请指教。

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