java 读取xml文件
来源:互联网 发布:人工智能 mp4 编辑:程序博客网 时间:2024/06/15 20:21
最近在写 一个 动态导入 Excel 的功能,其中利用了 dom4j 读取 xml 文件进行验证,poi 读取Excel 数据,reflect 反射生成 队对象,
接下来 先写java -dom4j 读取 xml 文件开始:
第一步:使用Dom4j开发,需下载dom4j相应的jar文件
1.官网下载: http://www.dom4j.org/dom4j-1.6.1/
2.dom4j是sourceforge.NET上的一个开源项目,因此可以到http://sourceforge.Net/projects/dom4j下载其最新版.
第二步:配置xml 文件用于读取
<?xml version="1.0" encoding="UTF-8"?><root><!-- 规则信息:BusinessRule --><improtExcel id="com.test.data.BusinessRule" name="ruleImport"><mapping type="String" excelTitle="规则名称" property="name" required="true"></mapping><mapping type="String" excelTitle="bps范围" property="bps_range" required="false"></mapping><mapping type="String" excelTitle="pps范围" property="pps_range" required="false"></mapping><mapping type="String" excelTitle="协议范围" property="prot" required="true"></mapping><mapping type="String" excelTitle="源端口" property="src_port" required="false"></mapping><mapping type="String" excelTitle="目的端口" property="dest_port" required="false"></mapping><mapping type="String" excelTitle="时间资源" property="time_res_id" required="true"></mapping><mapping type="String" excelTitle="是否启用" property="is_on" required="true"></mapping><mapping type="String" excelTitle="是否为黑名单" property="rosterFlag" required="true"></mapping><mapping type="String" excelTitle="源ip范围" property="srcIpRange" required="false"></mapping><mapping type="String" excelTitle="目的ip范围" property="dstIpRange" required="false"></mapping></improtExcel></root>
第三步:读取xml
package test.util.excelutil;import java.io.File;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;import com.venustech.tsoc.cupid.Cupid;import com.venustech.tsoc.cupid.nba.util.excelImportUtil.ExcelMappingBean;import com.venustech.tsoc.cupid.nba.util.excelImportUtil.StringUtil;/** * 规则导入 初始化映射 工具类 * @author Administrator * */public class RuleImportMappingUtil {private static RuleImportMappingUtil singleton = null;private Map<String, MappingBean> mappingBeanMap = new HashMap<String, MappingBean>();private Map<String, List<String>> titlesMap = new HashMap<String, List<String>>();public static RuleImportMappingUtil getInstance(){if(singleton == null){singleton = getSyncInstance();}return singleton;}/** * 线程安全 获取实例 * @return */private static synchronized RuleImportMappingUtil getSyncInstance(){return new RuleImportMappingUtil();}private RuleImportMappingUtil(){initExcelInfo();};/** * 初始化 参数 读取 xml 文件,初始化 信息 */private void initExcelInfo(){String webinfo = Cupid.getContextValueAs(String.class, "conf.dir");String fileName = webinfo + "/nta/util/importExcelMappingRule.xml";SAXReader reader = new SAXReader();Document document;try {document = reader.read(new File(fileName));Element root = document.getRootElement();List<Element> excelEles = root.elements();for(Element excelEle : excelEles){String id = excelEle.attributeValue("id");String alias = excelEle.attributeValue("name");List<Element> mappingEles = excelEle.elements();List<String> titles = new ArrayList<String>();for(Element mappingEle : mappingEles){MappingBean excelMapping = new MappingBean();excelMapping.setExcelTitle(mappingEle.attributeValue("excelTitle"));excelMapping.setProperty(mappingEle.attributeValue("property"));excelMapping.setRequired(Boolean.valueOf(mappingEle.attributeValue("required")));if(excelMapping.isRequired()){titles.add(excelMapping.getExcelTitle());}excelMapping.setType(mappingEle.attributeValue("type"));if("map".equals(excelMapping.getType())){excelMapping.setMapName(mappingEle.elementText("mapName"));excelMapping.setMapDefaultValue(mappingEle.elementText("mapDefaultValue"));//setDictionaryMapMap(excelMapping.getMapName());}else if("db".equals(excelMapping.getType())){excelMapping.setClassName(mappingEle.elementText("className"));excelMapping.setAnnoName(mappingEle.elementText("annoName"));excelMapping.setMethodName(mappingEle.elementText("methodName"));}if(StringUtil.strIsNull(alias)){mappingBeanMap.put(id + "_" + excelMapping.getExcelTitle(), excelMapping);}else{mappingBeanMap.put(id + "$" + alias + "_" + excelMapping.getExcelTitle(), excelMapping);}}if(!titles.isEmpty()){if(StringUtil.strIsNull(alias)){titlesMap.put(id, titles);}else{titlesMap.put(id + "$" + alias + "_", titles);}}}} catch (DocumentException e) {e.printStackTrace();} }/** * * @param packagePath 包路径 * @param name 总文件名 约定 * @param excelTitle 列的标题 * @return */public MappingBean getMappingBean(String packagePath , String name , String excelTitle){if(name == null || name.equals("")){return mappingBeanMap.get(packagePath + "_" + excelTitle);}else{return mappingBeanMap.get(packagePath + "$" + name + "_" + excelTitle);}}/** * 获取 所有的 字段值-中文含义 * @param packagePath * @param name * @return */public List<String> getAllTitles(String packagePath , String name ){if(name == null || name.equals("")){return titlesMap.get(packagePath);}else{return titlesMap.get(packagePath + "$" + name);}}}
当然 这种方式 是遍历读取,你也可以指定 节点 读取:
1.获取文档的根节点. Element root = document.getRootElement(); 2.取得某个节点的子节点. Element element=node.element(“四大名著"); 3.取得节点的文字 String text=node.getText(); 4.取得某节点下所有名为“csdn”的子节点,并进行遍历. List nodes = rootElm.elements("csdn"); for (Iterator it = nodes.iterator(); it.hasNext();) { Element elm = (Element) it.next(); // do something } 5.对某节点下的所有子节点进行遍历. for(Iterator it=root.elementIterator();it.hasNext();){ Element element = (Element) it.next(); // do something } 6.在某节点下添加子节点 Element elm = newElm.addElement("朝代"); 7.设置节点文字. elm.setText("明朝"); 8.删除某节点.//childElement是待删除的节点,parentElement是其父节点 parentElement.remove(childElment); 9.添加一个CDATA节点.Element contentElm = infoElm.addElement("content");contentElm.addCDATA(“cdata区域”);
未完待续。。。。。
1 0
- JAVA读取XML文件
- JAVA读取XML文件
- JAVA读取XML文件
- JAVA读取XML文件
- JAVA读取xml文件
- java 读取xml文件
- java读取XML文件
- Java 读取XML文件
- java读取XML文件
- Java读取xml文件
- JAVA读取xml文件
- Java读取xml文件
- Java读取xml文件
- java 读取xml文件
- JAVA读取XML文件
- JAVA读取xml文件
- JAVA读取xml文件
- java读取xml文件
- 读取xml文件
- jQuery基础知识一
- 以大数据眼光欣赏唐人文墨(一)
- 身份证验证java代码
- android实现自动升级并安装打开
- java 读取xml文件
- GitHub上star超过2k的安卓项目和代码风格指南
- hdu 1018 Big NUmber
- Spring Boot 快速入门
- Getting started with VLAD
- Android 系统架构
- Android studio获取开发版SHA1
- 普元EOS和BPS系统表表结构以及注释说明
- Lua 流程控制