public class XmlGetNodeUtil {
public static void main(String[] args) {
// 创建一个DocumentBuilderFactory的对象
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// 创建一个DocumentBuilder的对象
try {
// 创建DocumentBuilder对象
DocumentBuilder db = dbf.newDocumentBuilder();
// 通过DocumentBuilder对象的parser方法加载books.xml文件到当前项目下
Document document = db.parse("E:\\xmlData\\h24AdmAndDisRecord.xml");
NodeList nodes = document.getChildNodes();
if (nodes.getLength() > 0) {
String id = UUID.randomUUID().toString().replaceAll("-", "");
//System.out.println(id);
/*System.out.println("NODE_NAME\t" + "PARENT_NAME\t" + "NODE_HEAD\t" + "NODE_END\t" + "NODE_TYPE\t"
+ "SQL_INDEX\t" + "NODE_ORDER");*/
showNodes(nodes,id);
System.out.println(baseSql.replaceAll("#id", id).replaceAll("#dataName", dataName)
.replaceAll("#dataCode", dataCode));
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void showNodes(NodeList nodes,String baseDataId) {
if (nodes.getLength() > 0) {
for (int i = 0; i < nodes.getLength(); i++) {
Node node = nodes.item(i);
if (node.getNodeType() == 1) {
// System.out.println(node.getNodeName());
showNodeMessage(node,baseDataId);
NodeList childNodes = node.getChildNodes();
showNodes(childNodes,baseDataId);
}
}
}
}
private static String baseSql = "insert into UPLOAD_DATA_CONFIG_BASE(id,data_name,data_code,data_table,flag,create_date) "
+ "values('#id','#dataName','#dataCode','#dataCode','1',GETDATE());";
private static Integer index = 0;
private static String dataName = "";
private static String dataCode = "";
public static void showNodeMessage(Node node,String baseDataId) {
if (node != null) {
// getNodeType(node);
String nodeName = node.getNodeName().toUpperCase();
String nodeParent = node.getParentNode() == null ? " " : node.getParentNode().getNodeName().toUpperCase();
String nodeHead = createNodeHead(node);
String nodeEnd = createNodeEnd(node);
String nodeType = getNodeType(node);
String sqlIndex = "-1";
String nodeOrder = index+++"";
System.out.println(sql.replaceAll("#baseDataId", baseDataId).replaceAll("#nodeName", nodeName).replaceAll("#nodeParent", nodeParent)
.replaceAll("#nodeHead", nodeHead).replaceAll("#nodeEnd",nodeEnd )
.replaceAll("#nodeType", nodeType).replaceAll("#sqlIndex", sqlIndex).replaceAll("#nodeOrder", nodeOrder));
}
}
private static String sql = "INSERT INTO UPLOAD_DATA_CONFIG_NODE (id,base_data_id,node_name,parent_id,node_head,node_end,node_type,from_sql_order,from_sql_index,flag,create_date,node_order) "
+ "VALUES (REPLACE(NEWID(), '-', ''),'#baseDataId','#nodeName',"
+ "(select id from UPLOAD_DATA_CONFIG_NODE where base_data_id='#baseDataId' and node_name='#nodeParent'),"
+ "'#nodeHead','#nodeEnd','#nodeType',0,#sqlIndex,'1',GETDATE(),#nodeOrder);";
public static String getNodeType(Node node) {
if (node.getChildNodes().getLength() > 0) {
for (int i = 0; i < node.getChildNodes().getLength(); i++) {
if (!node.getChildNodes().item(i).getNodeName().equals("#text")) {
return "1";
}
}
return "3";
} else {
return "3";
}
/*
* System.out.println(node.getNodeName()+" :: "+node.getChildNodes().getLength
* ()); if(node.getChildNodes().getLength()>0) { for(int
* i=0;i<node.getChildNodes().getLength();i++) {
* System.out.println("\t\t"+node.getChildNodes().item(i).getNodeName()); } }
* return "";
*/
}
public static String createNodeHead(Node node) {
StringBuilder nodeHead = new StringBuilder();
if (node != null) {
nodeHead.append("<");
Boolean nodeBase = false;
if (node.getParentNode().getNodeName().equals("Body")) {
dataCode = node.getNodeName();
nodeBase = true;
}
nodeHead.append(node.getNodeName());
NamedNodeMap atts = node.getAttributes();
if (atts != null && atts.getLength() > 0) {
for (int i = 0; i < atts.getLength(); i++) {
Node attr = atts.item(i);
nodeHead.append(" " + attr.getNodeName() + "=\"" + attr.getNodeValue() + "\" ");
if (nodeBase && attr.getNodeName().equals("Name")) {
dataName = attr.getNodeValue();
}
}
}
nodeHead.append(">");
}
return nodeHead.toString();
}
public static String createNodeEnd(Node node) {
String nodeEnd = "";
if (node != null) {
nodeEnd = "</" + node.getNodeName() + ">";
}
return nodeEnd;
}
}