XML读写工具
|
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.util.List; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerFactory; import javax.xml.transform.stream.StreamSource; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.DocumentResult; import org.dom4j.io.DocumentSource; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * XML读写工具 * @author csx * */ public class XmlUtil { private static final Log logger=LogFactory.getLog(XmlUtil.class); public static final String CONFIG_FILE_NAME = "hurong.xml";// 系统配置文件名称 public static Document getSystemConfigXML(){ try{ Document document = null; File configFile = null; String configFilePath = Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath()+"hurong.xml"; configFile = new File(configFilePath); SAXReader saxReader = new SAXReader(); document = saxReader.read(configFile); return document;} catch (Exception e) { e.printStackTrace(); return null; } } /** * * 获取第三方短信、身份证验证接口 * * * **/ public static Document getThridInterface(){ try{ Document document = null; File configFile = null; String configFilePath = Thread.currentThread().getContextClassLoader().getResource("").toURI().getPath()+"thridInterface.xml"; configFile = new File(configFilePath); SAXReader saxReader = new SAXReader(); document = saxReader.read(configFile); return document;} catch (Exception e) { e.printStackTrace(); return null; } } /** * 把Document对象转成XML String * @param document * @return */ public static String docToString(Document document) { String s = ""; try { ByteArrayOutputStream out = new ByteArrayOutputStream(); OutputFormat format = new OutputFormat(" ", true, "UTF-8"); XMLWriter writer = new XMLWriter(out, format); writer.write(document); s = out.toString("UTF-8"); } catch (Exception ex) { logger.error("docToString error:"+ex.getMessage()); } return s; } /** * 把XML String转成Document对象 * @param s * @return */ public static Document stringToDocument(String s) { Document doc = null; try { doc = DocumentHelper.parseText(s); } catch (Exception ex) { logger.error("stringToDocument error:"+ex.getMessage()); } return doc; } /** * 把Document对象转成XML对象 * @param document * @param filename * @return */ public static boolean docToXmlFile(Document document, String filename) { boolean flag = true; try { OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); XMLWriter writer = new XMLWriter( new FileOutputStream(new File(filename)), format); writer.write(document); writer.close(); } catch (Exception ex) { flag = false; logger.error("docToXmlFile error:"+ex.getMessage()); } return flag; } /** * 把String XML转成XML文件 * @param str * @param filename * @return */ public static boolean stringToXmlFile(String str, String filename) { boolean flag = true; try { Document doc = DocumentHelper.parseText(str); flag = docToXmlFile(doc, filename); } catch (Exception ex) { flag = false; logger.error("stringToXmlFile error:"+ex.getMessage()); } return flag; } /** * 加载一个XML文件转成Document对象 * @param filename * @return */ public static Document load(String filename) { return load(new File(filename)); } public static Document load(File file){ Document document = null; try { SAXReader saxReader = new SAXReader(); saxReader.setEncoding("UTF-8"); document = saxReader.read(file); } catch (Exception ex) { logger.error("load XML File error:"+ex.getMessage()); } return document; } /** * 加载一个XML文件转成Document对象 * @param filename * @return */ public static Document load(String filename,String encode) { Document document = null; try { SAXReader saxReader = new SAXReader(); saxReader.setEncoding("encode"); document = saxReader.read(new File(filename)); } catch (Exception ex) { logger.error("load XML File error:"+ex.getMessage()); } return document; } /** * 通过流加载一个XML文档对象 * @param is * @return */ public static Document load(InputStream is){ Document document = null; try { SAXReader saxReader = new SAXReader(); //System.out.println("code:" + System.getProperty("file.encoding")); saxReader.setEncoding("UTF-8"); document = saxReader.read(is); } catch (Exception ex) { logger.error("load XML File error:"+ex.getMessage()); } return document; } /** * 通过流加载一个XML文档对象 * @param is * @return */ public static Document load(InputStream is,String encode){ Document document = null; try { SAXReader saxReader = new SAXReader(); saxReader.setEncoding(encode); document = saxReader.read(is); } catch (Exception ex) { logger.error("load XML File error:"+ex.getMessage()); } return document; } public static Document styleDocument( Document document, String stylesheet ) throws Exception { // load the transformer using JAXP TransformerFactory factory = TransformerFactory.newInstance(); Transformer transformer = factory.newTransformer( new StreamSource( stylesheet ) ); // now lets style the given document DocumentSource source = new DocumentSource( document ); DocumentResult result = new DocumentResult(); transformer.transform( source, result ); // return the transformed document Document transformedDoc = result.getDocument(); return transformedDoc; } public static void main(String[]args){ String filePath="L:/devtools/workspace/eoffice/web/js/menu.xml"; String style="L:/devtools/workspace/eoffice/web/js/menu-public.xsl"; Document doc=XmlUtil.load(filePath); try{ Document another=styleDocument(doc,style); System.out.println("xml:" + another.asXML()); //Set idSet=new HashSet(); Document publicDoc=another; Element rootEl=publicDoc.getRootElement(); List idNodes=rootEl.selectNodes("/Menus//*"); System.out.println("size:" + idNodes.size()); for(int i=0;i<idNodes.size();i++){ Element el=(Element)idNodes.get(i); Attribute attr= el.attribute("id"); if(attr!=null){ System.out.println("attr:" + attr.getValue()); //idSet.add(attr.getValue()); } } }catch(Exception ex){ ex.printStackTrace(); } } } |
XML读写工具的更多相关文章
- XML读写工具类
摘要:①读取XML文件,生成pojo对象:②将对象信息保存到xml中. 步骤: ①新建一个普通的java类BasePage: package com.test.selenium.pages; impo ...
- 【Python】Python XML 读写
class ACTIVE_FILE_PROTECT_RULE_VIEW(APIView): renderer_classes = (JSONRenderer, BrowsableAPIRenderer ...
- Java XML解析工具 dom4j介绍及使用实例
Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...
- XML编辑工具
[标题]XML编辑工具 [开发环境]Qt 5.2.0 [概要设计]使用QT的视图/模型结构.treeview控件以树形结构显示所要操作的XML文件,并实现xml的相关操作 [详细设计] 主要包含 no ...
- ntfs读写工具Paragon NTFS 15无限使用教程
Paragon NTFS mac版是Mac OS平台上最受欢迎的ntfs读写工具,专门开发用来弥补Windows和Mac OS X之间的不兼容性,通过在Mac OS X系统下提供对任何版本的NTFS文 ...
- properties文件读写工具类
java代码: import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; ...
- 在Android源码树中添加userspace I2C读写工具(i2c-util)
在Android源码树中添加userspace I2C读写工具(i2c-util) http://blog.csdn.net/21cnbao/article/details/7919055 分类: A ...
- jsonUtils&&Json、Xml转换工具Jackson使用
1.jsonUtils package com.icil.utils; import java.util.List; import com.fasterxml.jackson.core.JsonPro ...
- Spring-Boot ☞ ShapeFile文件读写工具类+接口调用
一.项目目录结构树 二.项目启动 三.往指定的shp文件里写内容 (1) json数据[Post] { "name":"test", "path&qu ...
随机推荐
- GRUB配置与应用,启动故障分析解决
一.GRUB启动位置 GRUB是现今大多数Linux系统采用的自举程序,这里先来看一下Linux的程序顺序: 执行顺序 动作 固件Firmware(CMOS/BIOS) → POST(Pwer ...
- 洛谷P2495 [SDOI2011]消耗战(虚树dp)
P2495 [SDOI2011]消耗战 题目链接 题解: 虚树\(dp\)入门题吧.虚树的核心思想其实就是每次只保留关键点,因为关键点的dfs序的相对大小顺序和原来的树中结点dfs序的相对大小顺序都是 ...
- Hive修改表语句
0x01:重命名表 1 ALTER TABLE table_name RENAME TO new_table_name; 上面这个命令可以重命名表,数据所在的位置和分区都没有改变. 0x02:改变列名 ...
- .dxf文件
DXF 是 AutoCAD 与其它软件之间进行 CAD 数据交换的开放矢量数据文件格式,可以分为两类:ASCII 格式和二进制格式:ASCII 具有可读性好的特点,但占用的空间较大:二进制格式则占用的 ...
- 设置hystrix的熔断时间
hystrix的熔断时间默认为1秒,这对于一个要部署的服务器来说太短了,所以可以把这个时间设置大一点 这个时间设置在yml中没有提示,下面是设置的代码: hystrix: command: defau ...
- [Javascript] Private Variables with IIFEs
An IIFE (immediately invoked function expression) is when a function is called immediately after it ...
- LeetCode 1197. Minimum Knight Moves
原题链接在这里:https://leetcode.com/problems/minimum-knight-moves/ 题目: In an infinite chess board with coor ...
- A@[G!C]%008
A@[G!C]%008 A Simple Calculator 细节题. B Contiguous Repainting 最后只要有连续\(K\)个鸽子同色就可以构造方案,枚举+前缀和 C Tetro ...
- Java接口、lambda的学习
接口的实现 : 使用interface定义:形式如下 interface Printable{ final int MAX = 100; void add(); float sum(float x ...
- 【转】Impala 中的 Invalidate Metadata 和 Refresh
前言Impala采用了比较奇葩的多个impalad同时提供服务的方式,并且它会由catalogd缓存全部元数据,再通过statestored完成每一次的元数据的更新到impalad节点上,Impala ...