import java.io.ByteArrayInputStream;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.ofbiz.entity.model.ModelUtil;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
public class Mssql2OracleXmlReader {
// public static void main(String args[]){
// List list = getTableName("F://workspace//xdp_//web//WEB-INF//framework//mssql2oracle.xml");
// }
public class IgnoreDTDEntityResolver implements EntityResolver
{
public InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId) throws SAXException,
java.io.IOException
{
if (systemId.equals("http://www.ofbiz.org/dtds/entitymodel.dtd")
|| systemId.equals("http://java.sun.com/dtd/ejb-jar_2_0.dtd")
|| systemId.equals("http://www.jboss.org/j2ee/dtd/jboss_3_2.dtd"))
return new InputSource(new ByteArrayInputStream("<?xml version='1.0' encoding='UTF-8'?>".getBytes()));
else
return null;
}
}
@SuppressWarnings("unchecked")
public List getTableName(String dataurl) {
List tableNames = new ArrayList();
try {
SAXReader reader = new SAXReader();
Document document = reader.read(dataurl);
Element res = document.getRootElement();
List <Element>list = res.elements("location");
SAXReader readerEntity = new SAXReader();
readerEntity.setValidation(false);
IgnoreDTDEntityResolver ider = new IgnoreDTDEntityResolver();
ider.resolveEntity("-//OFBiz//DTD Entity Model//EN", "http://www.ofbiz.org/dtds/entitymodel.dtd");
readerEntity.setEntityResolver(ider);
for(Element l :list) {
// System.out.println("文件路径:"+l.getText());
document = readerEntity.read(l.getText());
res = document.getRootElement();
List <Element>entityList = res.elements("entity");
for(Element el :entityList) {
String entityName = "";
String tableName = "";
if(null != el.attributeValue("table-name")){
tableName = el.attributeValue("table-name");
}else{
entityName = el.attributeValue("entity-name");
tableName = ModelUtil.javaNameToDbName(entityName);
}
tableNames.add(tableName);
//System.out.println("表名:" + tableName);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return tableNames;
}
}
mssql2oracle.xml
<?xml version="1.0" encoding="UTF-8"?>
<loader>
<location>F://workspace//cms_//web//WEB-INF//applications//Permission//entitydef//entitymodel.xml</location>
</loader>