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读写工具的更多相关文章

  1. XML读写工具类

    摘要:①读取XML文件,生成pojo对象:②将对象信息保存到xml中. 步骤: ①新建一个普通的java类BasePage: package com.test.selenium.pages; impo ...

  2. 【Python】Python XML 读写

    class ACTIVE_FILE_PROTECT_RULE_VIEW(APIView): renderer_classes = (JSONRenderer, BrowsableAPIRenderer ...

  3. Java XML解析工具 dom4j介绍及使用实例

    Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...

  4. XML编辑工具

    [标题]XML编辑工具 [开发环境]Qt 5.2.0 [概要设计]使用QT的视图/模型结构.treeview控件以树形结构显示所要操作的XML文件,并实现xml的相关操作 [详细设计] 主要包含 no ...

  5. ntfs读写工具Paragon NTFS 15无限使用教程

    Paragon NTFS mac版是Mac OS平台上最受欢迎的ntfs读写工具,专门开发用来弥补Windows和Mac OS X之间的不兼容性,通过在Mac OS X系统下提供对任何版本的NTFS文 ...

  6. properties文件读写工具类

    java代码: import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; ...

  7. 在Android源码树中添加userspace I2C读写工具(i2c-util)

    在Android源码树中添加userspace I2C读写工具(i2c-util) http://blog.csdn.net/21cnbao/article/details/7919055 分类: A ...

  8. jsonUtils&&Json、Xml转换工具Jackson使用

    1.jsonUtils package com.icil.utils; import java.util.List; import com.fasterxml.jackson.core.JsonPro ...

  9. Spring-Boot ☞ ShapeFile文件读写工具类+接口调用

    一.项目目录结构树 二.项目启动 三.往指定的shp文件里写内容 (1) json数据[Post] { "name":"test", "path&qu ...

随机推荐

  1. django项目中使用KindEditor富文本编辑器。

    先从官网下载插件,放在static文件下 前端引入 <script type="text/javascript" src="/static/back/kindedi ...

  2. 删除或关闭Word中的超链接

    最近使用的word老是会把一些文字内容或者标题转换成乱七八糟的格式,看的莫名其妙的,找了好久也不知道什么问题,后来一查才知道是因为这些文字包含超链接,word自动转换了...你说是不是莫名其妙. 要关 ...

  3. Echo团队Beta冲刺随笔集合

    班级:软件工程1916|W 作业:项目Beta冲刺(团队) 团队名称:Echo 作业目标:完成项目Beta冲刺 凡事预则立 Day 0: 凡事预则立 冲刺随笔 Day 1: Beta冲刺第一天 Day ...

  4. 用户体验报告(Echo)

    班级:软件工程1916|W 作业:项目Beta冲刺(团队) 团队名称:Echo 团队博客汇总 队员学号 队员姓名 个人博客地址 备注 221600136 张至锋 https://www.cnblogs ...

  5. 2018牛客网暑期ACM多校训练营(第一场)F:Sum of Maximum

    题意:给定N个数a[],现在用a形成一个新的数组b[],1<=b[i]<=a[i]. 问所有的方案的最大值之和. 思路:先排序.然后分段统计贡献,假设a[i-1]<a[i],那么[a ...

  6. 用mysql实现类似于oracle dblink的功能

      用mysql实现类似于oracle dblink的功能 首先看看有没有federated 引擎. mysql> show engines; +------------+----------+ ...

  7. Lexicographical Substring Search SPOJ - SUBLEX (后缀自动机)

    Lexicographical Substrings Search \[ Time Limit: 149 ms \quad Memory Limit: 1572864 kB \] 题意 给出一个字符串 ...

  8. 10 Unit Testing and Automation Tools and Libraries Java Programmers Should Learn

    转自:https://javarevisited.blogspot.com/2018/01/10-unit-testing-and-integration-tools-for-java-program ...

  9. nightwatch 基于Webdriver的端到端自动化测试框架

    nightwatch 是使用nodejs编写的,基于Webdriver api 的端到端自动化测试框架 包含以下特性 清晰的语法,基于js 以及css 还有xpath 的选择器 内置测试runner, ...

  10. 内核过DSE驱动签名验证.

    一丶简介 现在的驱动,必须都有签名才能加载.那么如何加载无签名的驱动模块那. 下面可以说下方法.但是挺尴尬的是,代码必须在驱动中编写.所以就形成了 你必须一个驱动带有一个签名加载进去.执行你的代码.p ...