📄 xmloperate.java
字号:
//Source file: D:\\excelimport\\src\\excelimport\\XMLOperate.java
//Source file: E:\\excelimport\\src\\excelimport\\XMLOperate.java
package cn.myapps.core.dynaform.dts.excelimport;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.util.Stack;
import org.xml.sax.AttributeList;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import cn.myapps.core.dynaform.dts.excelimport.utility.CommonUtil;
public class XMLOperate implements org.xml.sax.DocumentHandler {
private Stack _stk = null;
private ExcelMappingDiagram _fdgm = null;
private String elementname = "";
private String elementvalue = "";
private boolean isProperties = false;
private boolean isPropertiesElement = false;
// private Object object = null;
/**
* @roseuid 3E0428DC0120
*/
public XMLOperate() {
_fdgm = new ExcelMappingDiagram();
_stk = new Stack();
}
/**
* In this Section , Do XML Parser. Parser XML Stream to Vector of <b>Node.
*
* @param target
* @param data
* @throws org.xml.sax.SAXException
* @roseuid 3E0A6E190329
*/
public void processingInstruction(String target, String data)
throws SAXException {
}
/**
* @param ch[]
* @param start
* @param length
* @throws org.xml.sax.SAXException
* @roseuid 3E0A6E190347
*/
public void ignorableWhitespace(final char ch[], final int start,
final int length) throws SAXException {
}
/**
* @param locator
* @roseuid 3E0A6E19036F
*/
public void setDocumentLocator(final Locator locator) {
}
/**
* @roseuid 3E0A6E190383
*/
public void startDocument() {
}
/**
* @roseuid 3E0A6E19038D
*/
public void endDocument() {
// _stk.clear();
}
public void startElement(String name, AttributeList attributes) {
try {
if (name != null
&& name.trim().toLowerCase().equals(
this._fdgm.getClass().getName().toLowerCase())) {
_stk.push(_fdgm);
return;
} else if (name.equalsIgnoreCase(ExcelMappingDiagram.class
.getName())
|| name.equalsIgnoreCase(MasterSheet.class.getName())
|| name.equalsIgnoreCase(DetailSheet.class.getName())
|| name.equalsIgnoreCase(Relation.class.getName())
|| name.equalsIgnoreCase(Column.class.getName())) {
Class cls = Class.forName(name);
Class[] sign = new Class[1];
sign[0] = this._fdgm.getClass();
Constructor cnstr = cls.getConstructor(sign);
Object[] params = new Object[1];
params[0] = this._fdgm;
Object obj = cnstr.newInstance(params);
_fdgm.appendElement((Element) obj);
_stk.push(obj);
} else {
this.elementname = name;
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param ch[]
* @param start
* @param length
* @roseuid 3E0A6E1903B5
*/
public void characters(char ch[], int start, int length) {
String fieldval = new String(ch, start, length);
elementvalue += fieldval;
}
public void setFieldValue(String fieldval) {
try {
fieldval = CommonUtil.undoReplaceCharacter(fieldval);
// System.out.println("fieldval start->"+elementname+":"+fieldval);
// Node n = null;
Object obj = null;
if (!_stk.empty()) {
obj = (Object) _stk.peek();
if (obj instanceof Element) {
Element node = (Element) obj;
try {
Field field = null;
field = node.getClass().getField(this.elementname);
Class type = field.getType();
if (field != null) {
if (type.equals(Long.TYPE)) { // Long
fieldval = CommonUtil.isNumberString(fieldval) ? fieldval
: "0";
field.setLong(node, Long.valueOf(fieldval)
.longValue());
} else if (type.equals(Integer.TYPE)) { // Int
fieldval = CommonUtil.isNumberString(fieldval) ? fieldval
: "0";
field.setInt(node, Integer.valueOf(fieldval)
.intValue());
} else if (type.equals(Short.TYPE)) { // Short
fieldval = CommonUtil.isNumberString(fieldval) ? fieldval
: "0";
field.setShort(node, Short.valueOf(fieldval)
.shortValue());
} else if (type.equals(Double.TYPE)) { // Double
fieldval = CommonUtil.isNumberString(fieldval) ? fieldval
: "0";
field.setDouble(node, Double.valueOf(fieldval)
.doubleValue());
} else if (type.equals(Class
.forName("java.lang.String"))) { // String
fieldval = fieldval != null ? fieldval : "";
field.set(node, fieldval);
} else if (type.equals(Float.TYPE)) { // Float
fieldval = CommonUtil.isNumberString(fieldval) ? fieldval
: "0";
field.setFloat(node, Float.valueOf(fieldval)
.floatValue());
} else if (type.equals(Boolean.TYPE)) { // Boolean
fieldval = CommonUtil.isBooleanString(fieldval) ? fieldval
: "false";
field.setBoolean(node, (new Boolean(fieldval))
.booleanValue());
} else if (type.equals(Class
.forName("java.sql.Date"))) { // Date
java.sql.Date dt = CommonUtil
.isValidDate(fieldval) ? CommonUtil
.strToDate(fieldval)
: new java.sql.Date(System
.currentTimeMillis());
field.set(node, dt);
}
else if (type.equals(Class
.forName("java.util.Date"))) { // java.util.Date
java.util.Date dt = CommonUtil
.isValidDate(fieldval) ? CommonUtil
.strToDate(fieldval)
: new java.sql.Date(System
.currentTimeMillis());
field.set(node, dt);
// continue;
}
}
} catch (Exception e) {
e.printStackTrace();
}
} else if (obj instanceof ExcelMappingDiagram) {
ExcelMappingDiagram node = (ExcelMappingDiagram) obj;
// String fieldval = new String(ch, start, length);
try {
Field field = node.getClass()
.getField(this.elementname);
Class type = field.getType();
if (field != null) {
if (type.equals(Long.TYPE)) { // Long
fieldval = CommonUtil.isNumberString(fieldval) ? fieldval
: "0";
field.setLong(node, Long.valueOf(fieldval)
.longValue());
} else if (type.equals(Integer.TYPE)) { // Int
fieldval = CommonUtil.isNumberString(fieldval) ? fieldval
: "0";
field.setInt(node, Integer.valueOf(fieldval)
.intValue());
} else if (type.equals(Short.TYPE)) { // Short
fieldval = CommonUtil.isNumberString(fieldval) ? fieldval
: "0";
field.setShort(node, Short.valueOf(fieldval)
.shortValue());
} else if (type.equals(Double.TYPE)) { // Double
fieldval = CommonUtil.isNumberString(fieldval) ? fieldval
: "0";
field.setDouble(node, Double.valueOf(fieldval)
.doubleValue());
} else if (type.equals(Class
.forName("java.lang.String"))) { // String
fieldval = fieldval != null ? fieldval : "";
field.set(node, fieldval);
} else if (type.equals(Float.TYPE)) { // Float
fieldval = CommonUtil.isNumberString(fieldval) ? fieldval
: "0";
field.setFloat(node, Float.valueOf(fieldval)
.floatValue());
} else if (type.equals(Boolean.TYPE)) { // Boolean
fieldval = CommonUtil.isBooleanString(fieldval) ? fieldval
: "false";
field.setBoolean(node, (new Boolean(fieldval))
.booleanValue());
} else if (type.equals(Class
.forName("java.sql.Date"))) { // Date
java.sql.Date dt = CommonUtil
.isValidDate(fieldval) ? CommonUtil
.strToDate(fieldval)
: new java.sql.Date(System
.currentTimeMillis());
field.set(node, dt);
}
else if (type.equals(Class
.forName("java.util.Date"))) { // java.util.Date
java.util.Date dt = CommonUtil
.isValidDate(fieldval) ? CommonUtil
.strToDate(fieldval)
: new java.sql.Date(System
.currentTimeMillis());
field.set(node, dt);
// continue;
}
}
} catch (Exception e) {
}
}
}
}
// if (n.name!=null
// &&
// (n.name.trim().toLowerCase().equals("memo")||n.name.trim().toLowerCase().equals("cell"))
// && (length>0)
// ) {
// Element e = (Element)n.obj;
// e.setText(new String(ch, start, length));
// }
//
catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param name
* @roseuid 3E0A6E1903DD
*/
public void endElement(String name) {
setFieldValue(elementvalue);
elementvalue = "";
// CommonUtil.printDebugInfo("EndElement");
if (name.equalsIgnoreCase(ExcelMappingDiagram.class.getName())
|| name.equalsIgnoreCase(MasterSheet.class.getName())
|| name.equalsIgnoreCase(DetailSheet.class.getName())
|| name.equalsIgnoreCase(Relation.class.getName())
|| name.equalsIgnoreCase(Column.class.getName())) {
if (_stk != null && !_stk.isEmpty()) {
_stk.pop();
// return;
}
}
}
/**
* @param e
* @throws org.xml.sax.SAXException
* @roseuid 3E0A6E1A0009
*/
public void fatalError(SAXParseException e) throws SAXException {
System.out.println("Error: " + e);
throw e;
}
/**
* @return excelimport.FlowDiagram
* @roseuid 3E0A6E1A001D
*/
public ExcelMappingDiagram getResult() {
return _fdgm;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -