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. 使用ArcGIS for Server的Feature Access REST在线编辑图层

    如何启用Feature Access可以参考以前写的一篇博客:http://www.cnblogs.com/oceanking/p/3895257.html 本文主要关注一个全是点的图层,我也不知道学 ...

  2. shell脚本攻略1

    换行符 \n echo -n 禁止换行 环境变量声明export export PATH="$PATH:/home/user/bin" 获取字符串的长度 length=${#var ...

  3. python应用-输出验证码

    from random import randint def generate_code (code_len): """ 生成确定位数的验证码 :param code_l ...

  4. PLSQL 美化规则文件详解

    PL/SQL中有个代码优化的功能,里面可以定义规则,挺好用的,跟大家分享下: 1.首先新建一个my.br文件,在文件中复制以下内容 Version=1 RightMargin=90 Indent=4 ...

  5. openstack环境下搭建的keepalived 两台服务器直接无法ping通VIP ALLOWED-ADDRESS-PAIRS

    真的是搞了很久 结果一问人才知道真的是neutron的问题 当然前提是设置unicast 而不是默认设置 先贴出来后面再更新图片 [root@haproxy1 ~]# cat /etc/keepali ...

  6. spark读写Oracle、hive的艰辛之路(一)

    前两天工作需求,要通过给的几个Oracle的视图把数据入到hive库中,很遗憾,使用的华为云平台的集区环境中并没有sqoop1,当然也并没有sqoop2,所以,想到的解决方案是使用spark读取Ora ...

  7. js json 排序

    /* json:需要排序的json key:排序项 */ function JsonSort(json, key) { //console.log(json); for (var j = 1, jl ...

  8. 关于绿盟RSAS使用时遇到的问题

    本周在使用绿盟RSAS扫描工具时遇到了一些问题: 一.扫描工具在家测试可以正常工作,到了现场设置正确但Web端页面打不开: 二.扫描器可以正常进行扫描,并且成功扫描出结果,但显示目标主机没有问题: 原 ...

  9. 【LG3783】[SDOI2017]天才黑客

    [LG3783][SDOI2017]天才黑客 题面 洛谷 题解 首先我们有一个非常显然的\(O(m^2)\)算法,就是将每条边看成点, 然后将每个点的所有入边和出边暴力连边跑最短路,我们想办法优化这里 ...

  10. 使用VS2017遇到的一些小问题

    一.去掉预编译头 使用VS2017的时候,发现总是会有"pch.h","stdafx.h"这类预编译头,去掉还会报错.作为新手的我,暂时用不到这些预编译头,于是 ...