package com.thtf.ezone.ezoa.util;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Comparator;
import org.w3c.dom.*;
import javax.servlet.http.HttpServletRequest;
import javax.xml.parsers.*;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.*;
public class OrderXML {
/**
* @param args
*/
private Document xmldoc = null;
private Element root = null;
private String filename = null;
private String base = null;
public void setBase(String base) {
this.base = new File(base).getAbsolutePath();
}
public OrderXML(){}
public void generXML(HttpServletRequest request ) {
String path=request.getContextPath();
System.out.println(path);
OrderXML order=new OrderXML();
order.CreateXML("D:/easyway/apache-tomcat-6.0.14/webapps/ezone/documents/share.xml", "D:/easyway/apache-tomcat-6.0.14/webapps/ezone/documents/share/文件夹");
}
public OrderXML(String filename) {
this.filename = filename;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder db = factory.newDocumentBuilder();
xmldoc = db.parse(new File(filename));
root = xmldoc.getDocumentElement();
} catch (Exception e) {
e.printStackTrace();
}
}
public void CreateXML(String filename,String foldername) {
DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
try {
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder db=factory.newDocumentBuilder();
Document xmldoc= db.newDocument();
Element root=xmldoc.createElement("rootdir");
root.setAttribute("version", "1");
// String[] name = foldername.split("\\\\");
// root.setAttribute("name", name[name.length - 1]);
xmldoc.appendChild(root);
File folder=new File(foldername);
addNode(root,folder,xmldoc);
TransformerFactory transFactory=TransformerFactory.newInstance();
try {
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty("encoding", "utf-8");
transformer.setOutputProperty("indent", "yes");
DOMSource source=new DOMSource();
source.setNode(xmldoc);
StreamResult result=new StreamResult();
try {
result.setOutputStream(new FileOutputStream(filename));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
transformer.transform(source, result);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
}catch(Exception e){e.printStackTrace();}
}
public void addNode(Element node,File folder,Document xmldoc) {
if(folder.isDirectory()){
//目录节点
Element child=xmldoc.createElement("dir");
child.setAttribute("name", folder.getName());
child.setAttribute("id", "1");
child.setAttribute("sortid", "0");
node.appendChild(child);
File[] folders=folder.listFiles();
for(File file:folders){
addNode(child,file,xmldoc);
}
}else{
//文件节点
Element child=xmldoc.createElement("file");
child.setAttribute("name", folder.getName());
child.setAttribute("id", "1");
node.appendChild(child);
}
}
//目录
public void adddir(String filename, String foldername) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder db = factory.newDocumentBuilder();
Document xmldoc = db.parse(new File(filename));
Element root = xmldoc.getDocumentElement();
String[] name = foldername.split("\\\\");
String dir = getDeep2(foldername);
String []dirs= dir.split("/");
String path = "/rootdir";
for(int i=0;i<dirs.length-1;i++){
path+="/" +dirs[i];
}
Element node = (Element) selectSingleNode(path , root);
if(node!=null){
Element child = xmldoc.createElement("dir");
child.setAttribute("name", name[name.length - 1]);
child.setAttribute("id", "1");
child.setAttribute("sortid", "0");
node.appendChild(child);
int id= Integer.parseInt(root.getAttribute("version"));
root.setAttribute("version", String.valueOf(id+1));
}
TransformerFactory transFactory = TransformerFactory.newInstance();
try {
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty("encoding", "utf-8");
transformer.setOutputProperty("indent", "yes");
DOMSource source = new DOMSource();
source.setNode(xmldoc);
StreamResult result = new StreamResult();
try {
result.setOutputStream(new FileOutputStream(filename));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
transformer.transform(source, result);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void deldir(String filename, String foldername) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder db = factory.newDocumentBuilder();
Document xmldoc = db.parse(new File(filename));
Element root = xmldoc.getDocumentElement();
String[] name = foldername.split("\\\\");
String dir = getDeep2(foldername);
String []dirs= dir.split("/");
String path = "/rootdir";
for(int i=0;i<dirs.length;i++){
path+="/" +dirs[i];
}
Element node = (Element) selectSingleNode(path , root);
//System.out.println(" ************" +name[name.length - 1] +"*********");
if (node != null) {
node.getParentNode().removeChild(node);
int id= Integer.parseInt(root.getAttribute("version"));
root.setAttribute("version", String.valueOf(id+1));
}
TransformerFactory transFactory = TransformerFactory.newInstance();
try {
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty("encoding", "utf-8");
transformer.setOutputProperty("indent", "yes");
DOMSource source = new DOMSource();
source.setNode(xmldoc);
StreamResult result = new StreamResult();
try {
result.setOutputStream(new FileOutputStream(filename));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
transformer.transform(source, result);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void setdir(String filename, String foldername) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder db = factory.newDocumentBuilder();
Document xmldoc = db.parse(new File(filename));
Element root = xmldoc.getDocumentElement();
String[] name = foldername.split("\\\\");
String dir = getDeep2(foldername);
String []dirs= dir.split("/");
String path = "/rootdir";
for(int i=0;i<dirs.length-1;i++){
path+="/" +dirs[i];
}
Element node = (Element) selectSingleNode(path , root);
if (node != null) {
int temp = Integer.parseInt(node.getAttribute("id")) + 1;
node.setAttribute("id", String.valueOf(temp));
node.setAttribute("name", name[name.length - 1]);
int id= Integer.parseInt(root.getAttribute("version"));
root.setAttribute("version", String.valueOf(id+1));
}
TransformerFactory transFactory = TransformerFactory.newInstance();
try {
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty("encoding", "utf-8");
transformer.setOutputProperty("indent", "yes");
DOMSource source = new DOMSource();
source.setNode(xmldoc);
StreamResult result = new StreamResult();
try {
result.setOutputStream(new FileOutputStream(filename));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
transformer.transform(source, result);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
//文件
public void updFile(String filename, String foldername, String file) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder db = factory.newDocumentBuilder();
Document xmldoc = db.parse(new File(filename));
Element root = xmldoc.getDocumentElement();
String[] name = foldername.split("\\\\");
String dir = getDeep2(foldername);
String path = "/rootdir"+dir;
Element node = (Element) selectSingleNode(path, root);
String dirname= ((Element)node.getParentNode()).getAttribute("name");
if (node != null) {
if(dirname.equals(name[name.length - 2])){
Element child = xmldoc.createElement("file");
child.setAttribute("name", file);
child.setAttribute("id", "1");
child.setAttribute("sortid", "0");
node.appendChild(child);
int id= Integer.parseInt(root.getAttribute("version"));
root.setAttribute("version", String.valueOf(id+1));}
}
TransformerFactory transFactory = TransformerFactory.newInstance();
try {
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty("encoding", "utf-8");
transformer.setOutputProperty("indent", "yes");
DOMSource source = new DOMSource();
source.setNode(xmldoc);
StreamResult result = new StreamResult();
try {
result.setOutputStream(new FileOutputStream(filename));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
transformer.transform(source, result);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void delFile(String filename, String foldername, String file) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder db = factory.newDocumentBuilder();
Document xmldoc = db.parse(new File(filename));
Element root = xmldoc.getDocumentElement();
// String[] name=foldername.split("\\\\");
String[] myfile = file.split("\\\\");
String dir = getDeep2(foldername);
String path = "/rootdir"+dir;
//String path = "/rootdir";
// for (int i = 0; i < deep; i++) {
// path += "/dir";
// }
path += "/file";
Element node = (Element) selectSingleNode(path + "[@name='"
+ myfile[myfile.length - 1] + "']", root);
if (node != null) {
node.getParentNode().removeChild(node);
int id= Integer.parseInt(root.getAttribute("version"));
root.setAttribute("version", String.valueOf(id+1));
}
TransformerFactory transFactory = TransformerFactory.newInstance();
try {
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty("encoding", "utf-8");
transformer.setOutputProperty("indent", "yes");
DOMSource source = new DOMSource();
source.setNode(xmldoc);
StreamResult result = new StreamResult();
try {
result.setOutputStream(new FileOutputStream(filename));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
transformer.transform(source, result);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void renFile(String filename, String foldername, String file,
String newFile) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder db = factory.newDocumentBuilder();
Document xmldoc = db.parse(new File(filename));
Element root = xmldoc.getDocumentElement();
// String[] myfile=file.split("\\\\");
// int deep = Integer.parseInt(getDeep(foldername));
// String path = "/rootdir";
// for (int i = 0; i < deep; i++) {
// path += "/dir";
// }
String dir = getDeep2(foldername);
String path = "/rootdir"+dir;
path += "/file";
Element node = (Element) selectSingleNode(path + "[@name='" + file
+ "']", root);
if (node != null) {
int temp = Integer.parseInt(node.getAttribute("id")) + 1;
node.setAttribute("id", String.valueOf(temp));
node.setAttribute("name", newFile);
int id= Integer.parseInt(root.getAttribute("version"));
root.setAttribute("version", String.valueOf(id+1));
}
TransformerFactory transFactory = TransformerFactory.newInstance();
try {
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty("encoding", "utf-8");
transformer.setOutputProperty("indent", "yes");
DOMSource source = new DOMSource();
source.setNode(xmldoc);
StreamResult result = new StreamResult();
try {
result.setOutputStream(new FileOutputStream(filename));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
transformer.transform(source, result);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
//设置序号
public void setNode(String filename ,String nodetext, String order) {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
factory.setIgnoringElementContentWhitespace(true);
DocumentBuilder db = factory.newDocumentBuilder();
Document xmldoc = db.parse(new File(filename));
Element root = xmldoc.getDocumentElement();
// String[] name=foldername.split("\\\\");
String[] myfile = nodetext.split("\\\\");
String dir = getDeep2(nodetext);
String path = "/rootdir"+dir;
File file= new File(nodetext);
if(!file.isDirectory()){path= path.substring(0, path.lastIndexOf("/"));
path += "/file[@name='"
+ myfile[myfile.length - 1] + "']"; }
// if(myfile[myfile.length - 1].indexOf(".")!=-1){
// path= path.substring(0, path.length()-4);
// path += "/file";}
Element node = (Element) selectSingleNode(path , root);
if (node != null) {
node.setAttribute("sortid", order);
int id= Integer.parseInt(root.getAttribute("version"));
root.setAttribute("version", String.valueOf(id+1));
}
TransformerFactory transFactory = TransformerFactory.newInstance();
try {
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty("encoding", "utf-8");
transformer.setOutputProperty("indent", "yes");
DOMSource source = new DOMSource();
source.setNode(xmldoc);
StreamResult result = new StreamResult();
try {
result.setOutputStream(new FileOutputStream(filename));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
transformer.transform(source, result);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public int getOrder(String nodetext) {
String[] myfile = nodetext.split("\\\\");
int deep = Integer.parseInt(getDeep(nodetext));
String path = "/rootdir";
for (int i = 0; i < deep; i++) {
path += "/dir";
}
if(myfile[myfile.length - 1].indexOf(".")!=-1){
path += "/file";}
Element node = (Element) selectSingleNode(path + "[@name='"
+ myfile[myfile.length - 1] + "']", root);
if (node != null) {
return Integer.parseInt(node.getAttribute("sortid"));
} else {
return 9999999;
}
}
public String getDeep2(String path) {
String[] deep = null;
if (path != null && path.length() != 0) {
path = path.replace(base + "\\", "");
}
deep = path.split("\\\\");
String dir="";
if (deep != null){
for (int i = 0; i < deep.length; i++) {
dir += "/dir"
+"[@name='"
+ deep[i] + "']";
}
}else{
dir="/dir";
}
return dir;
}
public String getDeep(String path) {
String deep[] = (String[])null;
if (path != null && path.length() != 0) {
path = path.replace((new StringBuilder(String.valueOf(base))).append("\\").toString(), "");
}
deep = path.split("\\\\");
if (deep != null) {
return (new StringBuilder()).append(deep.length).toString();
} else {
return "1";
}
}
public String getFileName(String path) {
String fileName = " ";
if (path != null && path.length() != 0) {
fileName = path.substring(path.lastIndexOf("\\") + 1);
}
return fileName;
}
public static Node selectSingleNode(String express, Object source) {// 查找节点,并返回第一个符合条件节点
Node result = null;
XPathFactory xpathFactory = XPathFactory.newInstance();
XPath xpath = xpathFactory.newXPath();
try {
result = (Node) xpath
.evaluate(express, source, XPathConstants.NODE);
} catch (XPathExpressionException e) {
e.printStackTrace();
}
return result;
}
public void output() {// 将node的XML字符串输出到控制台
TransformerFactory transFactory = TransformerFactory.newInstance();
try {
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty("encoding", "utf-8");
transformer.setOutputProperty("indent", "yes");
DOMSource source = new DOMSource();
source.setNode(xmldoc);
StreamResult result = new StreamResult();
try {
result.setOutputStream(new FileOutputStream(filename));
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
transformer.transform(source, result);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
JAVA中生成xml文件到指定路径和上传到ftp服务器到指定路径的方法。
有时候我们需要修改XML文件到服务器,来保存我们客户端用户修改的信息
pull解析和生成xml文件,使用pull解析本地的xml文件,并且生成了一个不同格式的新的xml文件
用于本地自动生成映射文件,节省开发者时间。
在java.beans包中,有两个好东西,XMLEncoder和XMLDecoder。从XML存取对象真是太费力气啦。做了小工具类,以后可以用用了。本文介绍了这两个可以把JAVA对象序列化保存为XML文件的工具类。
本AS3类用于AIR的本地程序开发,利用FILE类进行整理,可以支持将本地位置的文件夹进行遍历,并生成XML格式文件。
webservice远程调用,返回String数据并生成xml文件到本地工程,在通过SAX解析器把数据解析出来。这是webservice应用的一个简单的例子。根据该例子的思想,可以实现很多功能了。例如把client工程的sayHello方法改为...
本文将详细介绍下php获取本地图片文件并生成xml文件输出,代码简单实用,感兴趣的朋友可以参考下哈,希望对你学习php有所帮助
c#通过model生成/读取xml文件,将数据保存到本地的一种手段。
刚刚下载的的多语言卫星程序集制作工具,该工具...1.个别项目中无法通过翻译自动生成本地资源文件,如:zh-CN的资源文件。是因为该项目中没有对应的原始资源文件,即<文件名>.resx文件。补充<文件名>.resx后即可解决。
freeswitch xml_curl模块使用 freeswitch 数据库生成xml文件,使用php生成代码,替换掉directory,ivr,dialplan,等各种本地配置
java读取跟输出xml文件,需要的包:jdom2-2.0.6.jar、xstream-1.4.9.jar,直接下载可查看,操作本地xml以及生成本地xml,代码比较简单,不喜勿载。
flex语言编写的,把xml内容存成xml文件保存到指定的位置!
@Title:XML文件中属性的解析修改 @Introduction:使用PULL方法进行XML解析 ... 可以设置序列号池的起始值和终止值并保存进取号序列池文件中如果这两个文件中缺少任何一个,都将在本地上述指定目录自动生成
根据WSDL文件生成客户端代码与创建客户端工程 注意小细节:在根据对方提供的webservice地址,先将对方webservice的wsdl文件描述文件保存到本地时,格式先保存为xml,后将其后缀名为.wsdl的文件 否则报:...
假设我们有一个XML文件mailbox.xml,它的内容如下: <?xml version="1.0" encoding="GB2312"?> 老李 老张 <heading>好久不见!</heading> <body>好久不见,最近好吗?</body&...
##创建XML文件并将其发送到服务器的应用程序。 该应用程序需要android支持v4和Google Play服务才能构建。 主屏幕上有两个按钮。 第一个按钮生成一个包含用户详细信息的XML文件,并将其发送到服务器。 第二个按钮...
用于在springboot里面自动生成数据库某张表的数据到后端文件,节省手动编辑的时间。修改xml里面的文件路径(改成自己本地的文件路径)以及复制所需生成文件的数据库的表名,修改表名和设置实体类名。
在项目中,使用maven加载依赖仓库时,有时因为网络卡顿或者配置pom.xml时,若下载不完整就会出现lastUpdated等文件。这些文件占内存,项目加载时耗时较久,有时会报错,需要及时清理。 1、工具作用:清理本地和远程...