1,需要用到dom4j的jar包。为了打开xml方便,设计一个简单的封装类。

package cn.com.gtmc.glaf2.util;

import java.io.File;
import java.net.URISyntaxException; import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader; public class XmlUtil {
/**
* @param path
* 相对路径,相对于classes文件夹
* @return Document
* org.dom4j.Document
* @throws DocumentException
*/
public static Document getDocument(String path) throws DocumentException, URISyntaxException {
String filePath = XmlUtil.class.getClassLoader().getResource("").toURI().getPath() + path; SAXReader reader = new SAXReader();
Document doc = reader.read(new File(filePath));
return doc;
} }

2,使用的例子

<?xml version="1.0" encoding="UTF-8"?>
<workbook>
<worksheet index="0">
<cell src="Supplier.remark" target="B3" description="备注" />
</worksheet>
</workbook>
        try {
Supplier obj = (Supplier)params.get("obj"); Document doc = XmlUtil.getDocument("excel\\supplier-import.xml");
Element root = doc.getRootElement(); List nodes = root.selectNodes("worksheet/cell");
Iterator it = nodes.iterator();
while(it.hasNext()) {
Element ele = (Element)it.next();
String src = ele.attributeValue("src");
String cellTarget = ele.attributeValue("target");
if(src != null && !"".equals(src)) {
String[] splits = src.split("\\.");
String className = splits[0];
String filedName = splits[1];
//。。。
}
} } catch (Exception e) {
LOG.error("", e);
}

特别要注意,上面的Element.selectNodes方法,用到了XPath的语法,dom4j.jar里面是没有包含这个功能的,需要添加下面这个jar包(maven工程,非maven工程需要自己去下载),不然会报错。

        <!-- https://mvnrepository.com/artifact/jaxen/jaxen -->
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>1.1.6</version>
</dependency>

最新文章

  1. 做一个java项目要经过那些正规的步骤
  2. AUTOIT解决域控普通用户以管理员身份安装软件方法
  3. NodeMCU初探
  4. MemSQL分布式架构介绍(一)
  5. Android大图片裁剪终极解决方案(上:原理分析)
  6. C++中字母大写和小写转换实现的优化
  7. 一个ubuntu命令
  8. HDU 5366 The mook jong
  9. 前端Cookie与Session的区别
  10. php读取excel文档内容(转载)
  11. FFMpeg for PHP
  12. kubernetes 集群
  13. php ci nginx 伪静态rewrite配置方法
  14. Win10系列:VC++数据绑定
  15. String StringBuffer和StringBuilder区别及性能
  16. nodejs 监控代码变动实现ftp上传
  17. Linux IO模式及 select、poll、epoll详解及源码(转)
  18. C#中Split用法~字符串分隔
  19. python pandas groupby
  20. Zookeeper的几个应用场景

热门文章

  1. JavaScript基础笔记(一)基本概念
  2. Scrapy基础(九)————将不定长度的URL进行固定长度写入Item中
  3. Django content-type 使用
  4. mongoose 根据_id更新数据
  5. [转]OpenVPN官网的HOWTO
  6. React Native升级目标SDK
  7. 护眼党必备良心app
  8. WebStorm中使用npm包管理器
  9. C#ConcurrentDictionary源代码
  10. sublime Text3 插件