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