Java代码

package com.hearker.demo.core;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.hibernate.util.xml.Origin;
import org.hibernate.util.xml.XmlDocument;

import com.hearker.common.demo.TextFile;

/**
 * @Author Rain
 * @Date   2016年2月26日
 * @Comment Dom4j 生成开发示例XML文档与解析开发示例XML文档
 */
public class StudioFuncReader implements XmlDocument {

	//创建XML -- 待完善
	public void createXml(String fileName) {
		Document document = DocumentHelper.createDocument();
		Element employees = document.addElement("config");
		Element employee = employees.addElement("node");
		Element name = employee.addElement("name");
		name.setText("HearkenDemo_page_layout");
		Element id = employee.addElement("id");
		id.setText("HearkenDemo_page_layout");
		Element belongto = employee.addElement("belongto");
		belongto.setText("HearkenDemo_page");
		try {
			Writer fileWriter = new FileWriter(fileName);
			XMLWriter xmlWriter = new XMLWriter(fileWriter);
			xmlWriter.write(document);
			xmlWriter.close();
		} catch (IOException e) {

			System.out.println(e.getMessage());
		}

	}
	//解析开发示例XML
	public void parserXml(String fileName) {
		File inputXml = new File(fileName);
		SAXReader saxReader = new SAXReader();
		try {
			Document document = saxReader.read(inputXml);
			Element employees = document.getRootElement();
			for (Iterator i = employees.elementIterator(); i.hasNext();) {
				Element employee = (Element) i.next();
				for (Iterator j = employee.elementIterator(); j.hasNext();) {
					Element node = (Element) j.next();
					System.out.println(node.getName() + ":" + node.getText());
				}

			}
		} catch (DocumentException e) {
			System.out.println(e.getMessage());
		}
		System.out.println("--- StudioFuncConfig.xml");
	}
	/**
	 * @param fileName
	 * @param nodeid
	 * @return 当前示例的所有相关源代码
	 */
	//根据节点ID拿到所有源代码文件属性地址
	public List<Map> parserXmlNode(String fileName,String nodeid) {
		
		List sourcelist = new ArrayList<Map>();
		File inputXml = new File(fileName+"WEB-INF\\\\classes\\\\StudioFuncConfig.xml");
		SAXReader saxReader = new SAXReader();
		try {
			//根据根节点读取文档
			Document document = saxReader.read(inputXml);
			Element nodes = document.getRootElement();
			for (Iterator i = nodes.elementIterator(); i.hasNext();) {
				Element node = (Element) i.next();
				//根据传入节点读取节点
				if(node.attributeValue("id").equals(nodeid)){
					List lis = node.attributes();
					//遍历节点中的子属性
					int j=0;
					String tmp[]={""};
					for (Iterator iterator = lis.iterator(); iterator.hasNext();) {
						Attribute att = (Attribute) iterator.next();
						//符合类型的文件内容进行处理
						if(!"".equals(att.getValue())&&att.getValue()!=null&& accept(att.getName())==true){
							//多文件操作
							String paths[] = att.getValue().split("#");
							Map tempMap = new HashMap();
							for(int k=0;k<paths.length;k++){
								tempMap.put(att.getName()+(k+1), TextFile.read(fileName+paths[k].replaceAll("/", "\\\\")));
							}
							sourcelist.add(j, tempMap);
							j++;
						}
					}
				}
					
//				for (Iterator j = employee.elementIterator(); j.hasNext();) {
//					Element node = (Element) j.next();
//					System.out.println(node.getName() + ":" + node.getText());
//				}
			}
		} catch (DocumentException e) {
			System.out.println(e.getMessage());
		}
		return sourcelist;
	}
	//配置开发示例配置文件中需要解析的属性
	public boolean accept(String str){
		String [][]typenames = {{"id","false"},{"belongto","false"},{"text","false"},{"name","false"},
				{"iconcls","false"},{"url","false"},{"xhtml","true"},{"js","true"},{"java","true"},
				{"sqlMap","true"},{"xml","true"},{"composite","true"},{"json","true"},{"config","true"}};
		boolean bl =false; 
		for (int i = 0; i < typenames.length; i++) {
			
			if(str.equals(typenames[i][0])&&typenames[i][1].equals("true")){
				bl=true;
			}
		}
		return bl;
	}
	@Override
	public com.sunsheen.jfids.dom4j.Document getDocumentTree() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Origin getOrigin() {
		// TODO Auto-generated method stub
		return null;
	}
}

你可能感兴趣的:(Java代码)