浏览 5894 次
锁定老帖子 主题:Review - Dom4j学习笔记(二)
精华帖 (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解析的例子。高手请指教。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-12-26
有几个小错误
|
|
返回顶楼 | |
发表时间:2008-12-26
这种需求java自带的saxparser也可以达到,代码复杂度近似
SaxReader有独立使用的必要么.. |
|
返回顶楼 | |
发表时间:2008-12-29
oxromantic 写道 这种需求java自带的saxparser也可以达到,代码复杂度近似SaxReader有独立使用的必要么.. 我只是为了熟悉dom4j 里面SaxReader方法才写的小例子,代码确实烦琐,谢谢 |
|
返回顶楼 | |
发表时间:2009-07-27
DOM4J 效率高
|
|
返回顶楼 | |
发表时间:2009-07-27
还是更喜欢用JDOM
|
|
返回顶楼 | |