dom4j解析带前缀名的xml文件(解析pdm文件)

pdm文件的本质为xml文档,利用dom4j和xpath对pam文件解析,从而得到pdm文件的表和该表的列

Table.java---表的对象

package org.javaauto.bean;

import java.util.ArrayList;
import java.util.List;

public class Table {

private String tableName;//表名

private List<Column>columnList = new ArrayList<Column>();//字段对象

public String getTableName() {
return tableName;
}

public void setTableName(String tableName) {
this.tableName = tableName;
}

public List<Column> getColumnList() {
return columnList;
}

public void setColumnList(List<Column> columnList) {
this.columnList = columnList;
}


}

column.java----列的对象

package org.javaauto.bean;

import java.math.BigDecimal;

public class Column {

/**
* 数据的列
*/


private String columnType;//类型

private String column;//字段

private String columnName;//说明

public String getColumnType() {
if(columnType.toLowerCase().contains("varchar")||columnType.contains("char")){
return "String";
}
else if(columnType.toLowerCase().contains("numeric")){
return "BigDecimal";
}
else if(columnType.toLowerCase().contains("bigint")){
return "Long";
}
else if(columnType.toLowerCase().contains("date")){
return "Date";
}
else if(columnType.toLowerCase().contains("int")){
return "int";
}
else{
return columnType;
}

}

public void setColumnType(String columnType) {
this.columnType = columnType;
}

public String getColumn() {
return column;
}

public void setColumn(String column) {
this.column = column;
}

public String getColumnName() {
return columnName;
}

public void setColumnName(String columnName) {
this.columnName = columnName;
}
}

解析文件XmlPrase.java 最后返回List<Table> 对象

package org.javaauto.xmlPrase;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.XPath;
import org.dom4j.io.SAXReader;
import org.javaauto.bean.Column;
import org.javaauto.bean.Table;

public class XmlPrase {

/**
* 解析xml文档,将解析到得数据封装到Table对象当中
*/

public List<Table> getXmlTable(String xmlPath){

List <Table> tableList = new ArrayList<Table>();

//根据xml文件,将文件已对象的形式表现出来
File file = new File(xmlPath);
//构建解析方式
SAXReader reader = new SAXReader();
//得到文档对象
Document doc = null;
try {
doc = reader.read(file);
} catch (DocumentException e) {
// TODO Auto-generated catch block
System.out.println("文档读取失败!");
return null;
}
//根据xpath方式得到所要得到xml文档的具体对象,根据分析解析xml文档可知,xml文档中含有前缀名
Map<String,String> map = new HashMap<String, String>();
map.put("c","collection");
//根据xml文档,//c:Table 即为得到的文档对象
XPath path = doc.createXPath("//c:Tables");
path.setNamespaceURIs(map);
List<Element> list = path.selectNodes(doc);
//得到tables对象,该对象是该pdm文件中所有表的集合
for(Element element : list){
for(Iterator<Element> iter = element.elementIterator("Table");iter.hasNext();){
Element table_s = iter.next();
Table table = new Table();
table.setTableName(table_s.elementText("Code"));
//通过一个table对象,得到columns对象
Element columns = table_s.element("Columns");
List <Column> columnList = new ArrayList<Column>();
for(Iterator<Element> cols = columns.elementIterator("Column");cols.hasNext();){
Element column = cols.next();
Column column2 = new Column();
column2.setColumn(column.elementText("Code"));
column2.setColumnName(column.elementText("Name"));
column2.setColumnType(column.elementText("DataType"));
columnList.add(column2);
}
table.setColumnList(columnList);

tableList.add(table);
}
}

return tableList;
}


public static void main(String [] args){
XmlPrase xp = new XmlPrase();
xp.getXmlTable("e:/DRUC.xml");

}
}



解析的xml文件为:
powerdesiner生成的pdm文件
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值