获取XML节点工具类 XmlGetNodeUtil

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;
	}
}

猜你喜欢

转载自blog.csdn.net/RuiKe1400360107/article/details/84886012