/**
* @description 读取xml文档模板
* @param xmlUrl
*/
public void readTemplate() {
//ExcelModel model = ExcelModel.getInstance();
model = ExcelModel.getInstance();
// TODO Auto-generated method stub
//获得一个XML文件的解析器
javax.xml.parsers.DocumentBuilderFactory dbf;
javax.xml.parsers.DocumentBuilder db;
org.w3c.dom.Document document;
try {
dbf = javax.xml.parsers.DocumentBuilderFactory.newInstance();
//解析XML文件生成DOM文档的接口类,以便访问DOM
db = dbf.newDocumentBuilder();
//设定解析参数
dbf.setIgnoringElementContentWhitespace(true);
String realUrl=URLDecoder.decode(this.getClass().getClassLoader().getResource("").getFile(), "UTF-8");
realUrl = new File(realUrl).getParent();
document = db.parse(new File(this.getClass().getClassLoader().getResource("").toURI().getPath()
+"com/hse/excel/template/template.xml"));
NodeList list = document.getElementsByTagName("head");
NodeList listC = document.getElementsByTagName("columns");
for(int i = 0,il=list.getLength(); i < il; i++){
Element element = (Element)list.item(i);
NodeList headColumns = element.getElementsByTagName("headColumn");
List<ExcelNode> headNode = new LinkedList <ExcelNode>();
for(int n=0, nl=headColumns.getLength(); n < nl; n++)
{
Element attrs = (Element)headColumns.item(n);
String columnLabel = attrs.getElementsByTagName("columnLabel").item(0).getTextContent();
String columnSpan = attrs.getElementsByTagName("columnSpan").item(0).getTextContent();
String alarmMsg = attrs.getElementsByTagName("alarmMsg").item(0).getTextContent();
ExcelNode node = new ExcelNode();
node.setColumnLabel(columnLabel);
node.setColumnSpan(columnSpan);
node.setAlarmMsg(alarmMsg);
headNode.add(node);
//System.out.println("columnLabel :" + columnLabel);
//System.out.println("columnSpan :" + columnSpan);
//System.out.println("\n\n\n");
}
model.addHeads(headNode, i);
}
for(int i = 0,il=listC.getLength(); i < il; i++){
Element element = (Element)listC.item(i);
NodeList lColumns = element.getElementsByTagName("column");
List<ExcelNode> columns = new LinkedList <ExcelNode>();
for(int n=0, nl=lColumns.getLength(); n < nl; n++)
{
Element attrs = (Element)lColumns.item(n);
String columnName = attrs.getElementsByTagName("columnName").item(0).getTextContent();
String columnLabel = attrs.getElementsByTagName("columnLabel").item(0).getTextContent();
String columnType = attrs.getElementsByTagName("columnType").item(0).getTextContent();
String isValidate = attrs.getElementsByTagName("isValidate").item(0).getTextContent();
String pattern = attrs.getElementsByTagName("pattern").item(0).getTextContent();
String alarmMsg = attrs.getElementsByTagName("alarmMsg").item(0).getTextContent();
ExcelNode node = new ExcelNode();
node.setColumnName(columnName);
node.setColumnLabel(columnLabel);
node.setColumnType(columnType);
node.setIsValidate(isValidate);
node.setPattern(pattern);
node.setAlarmMsg(alarmMsg);
columns.add(node);
System.out.print("columnName :" + columnName+"\t");
System.out.print("columnLabel :" + columnLabel+"\t");
System.out.println("columnType :" + columnType);
System.out.print("isValidate :" + isValidate+"\t");
System.out.print("pattern :" + pattern+"\t");
System.out.print("alarmMsg :" + alarmMsg+"\t");
System.out.println("\n\n");
}
model.setColumns(columns);
}
//查某一个表的主键列名
//SELECT COLUMN_NAME FROM USER_CONS_COLUMNS WHERE TABLE_NAME = 'S_THREESAMETIME'
//AND CONSTRAINT_NAME LIKE '%PK%';
//遍历XML文档
//walkNode(document.getDocumentElement());
/**
//获得根节点
Element element=document.getDocumentElement();
//获得根节点的子节点列表
NodeList nodes=element.getChildNodes();
*/
} catch (SAXException se) {
//解析过程错误
Exception e = se;
if (se.getException() != null)
e = se.getException();
e.printStackTrace();
} catch (IOException ie) {
//文件处理错误
ie.printStackTrace();
} catch (Exception pe) {
//解析器设定错误
pe.printStackTrace();
}finally{
db=null;dbf=null;
}
}