dom4j解析xml文件 或者xml格式字符串
来源:互联网 发布:顶级域名表示政府部门 编辑:程序博客网 时间:2024/06/14 04:29
主要记录的是项目中遇到的解析xml报文 获取指定数据的方法,怕以后会忘,记录一下
导包:dom4j(版本根据需要,不会造成兼容错误就可以)
主要思路:利用递归的形式,解析xml文件,首先附录递归的方法,因为要求是需要把抓取到的数据放到指定文件,并且现在只是一个demo形式,所以用了FileWriter的相关方法,还不尽完善,有需要改善的地方希望大家留言...
/** * 解析任意xml节点的方法 */public static void resolveNode (Element node,FileWriter writer) throws IOException {//如果是thedata标签 ,抓取属性value值if ("TheData".equalsIgnoreCase(node.getName())) {//输出当前节点名writer.write("\r\n");writer.write("------------------\r\n");writer.write("当前节点:" + node.getName() + "\r\n");//遍历当前节点所有的属性值,抓取value属性的值List<Attribute> attributes = node.attributes();for (Attribute a : attributes) {if ("value".equalsIgnoreCase(a.getName())) {writer.write("属性:" + a.getName() + ",值:"+ a.getValue() + "\r\n");}}}//获取所有的子节点,并递归此方法Iterator<Element> iterator = node.elementIterator();while (iterator.hasNext()) {Element e = iterator.next();resolveNode(e,writer);}}
创建file文件的方法:
public static String createFile (String fileName) {//获取FileWriter,写入文件String result = "";File directory = new File(".");String path = null;try {path = directory.getCanonicalPath();} catch (IOException e) {e.printStackTrace();throw new RuntimeException("获取当前路径时出错");}path += "\\" + fileName;logger.info("path = " + path);File file = new File (path);if(file.exists()) { logger.info("创建单个文件" + path + "失败,目标文件早已存在!"); return path; } if (path.endsWith(File.separator)) { logger.error("创建单个文件" + path + "失败,目标文件不能为目录!"); return result; } //判断目标文件所在的目录是否存在 if(!file.getParentFile().exists()) { //如果目标文件所在的目录不存在,则创建父目录 System.out.println("目标文件所在目录不存在,准备创建它!"); if(!file.getParentFile().mkdirs()) { logger.error("创建目标文件所在目录失败!"); return result; } } //创建目标文件 try { if (file.createNewFile()) { logger.info("创建单个文件" + path + "成功!"); return path; } else { logger.error("创建单个文件" + path + "失败!"); return result; } } catch (IOException e) { e.printStackTrace(); logger.error("创建单个文件" + path + "失败!" + e.getMessage()); return result; }}
主方法:
@RequestMapping("/resolveXML.do")@ResponseBodypublic ControllerResult ResolveXmlMethod (@RequestBody String xmlStr) {/*//读取xml文件的方法SAXReader reader = new SAXReader(); Document document = reader.read(new File("文件路径"));*/ControllerResult result = new ControllerResult();logger.info("xmlStr=" + xmlStr);//解析xml字符串Document doc = null;try {doc = DocumentHelper.parseText(xmlStr);} catch (DocumentException e) {e.printStackTrace();result.setIsSuccess(false);result.setMsg("字符串转换xml格式出错");return result;}//获取根节点Element root = doc.getRootElement();//创建输出目录String filePath = createFile("log.txt");if (filePath == null || "".equals(filePath.trim())) {result.setIsSuccess(false);result.setMsg("创建输出目标文件失败");return result;}FileWriter writer = null;try { writer = new FileWriter(filePath, true); writer.write("\r\n"); writer.write("\r\n"); writer.write("\r\n"); writer.write("#################\r\n"); //遍历指定节点和她下面所有的子节点,并写入指定文件 resolveNode(root,writer); } catch (IOException e) { e.printStackTrace(); result.setIsSuccess(false);result.setMsg("创建写文件器失败");return result; } finally { try { if(writer != null){ writer.close(); } } catch (IOException e) { e.printStackTrace(); } } result.setIsSuccess(true);return result;}
-------------------------------------------------------------------------------------END---------------------------------------------------------------------------------------
阅读全文
0 0
- dom4j解析xml文件 或者xml格式字符串
- dom4j解析xml格式字符串
- 使用Dom4j来解析xml格式字符串
- dom4j解析xml字符串
- DOM4J解析xml字符串
- dom4j解析xml字符串
- dom4j解析xml字符串
- dom4j解析xml字符串
- DOM4J解析XML字符串
- dom4j解析XML字符串
- dom4j解析字符串型soap.xml文件
- 将JavaBean用DOM4J转成xml格式的字符串,用DOM4J解析xml格式的字符串
- XML---DOM4J解析XML文件
- XML DOM4J解析XML文件
- xml文件解析-DOM4J
- dom4j解析Xml文件
- DOM4J 解析XML文件
- dom4j解析xml文件
- springMVC+activemq整合注解方式
- JS的三种最常见的对话框
- Docker 创建私有仓库
- JVM——内存管理和垃圾回收
- JSON ELement 的简单介绍
- dom4j解析xml文件 或者xml格式字符串
- Verilog 语法入门知识
- 如何利用U盘制作启动盘安装系统
- hbase的整体了解
- spring-mvc限制前端传递list参数的长度为256
- docker的一些使用小结
- 神经网络与深度学习第四周-Deep Neural Network
- 小程序问题:未找到入口 app.json 文件,或者文件读取失败,请检查后重新编译。
- C语言指针变量的简单使用