dom4j 解析xml 并且进行增加,删除 操作后重新生成xml文件

来源:互联网 发布:mac上安装apt get 编辑:程序博客网 时间:2024/05/29 17:39
package Bean;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;public class testXml {    public static void main(String[] args) throws DocumentException, IOException {        XMLWriter xmlwriter = null;          OutputStream out = null;         //这个xml字符串我只是举个例子说明她的格式 你们不用管        String xml = "<config>\n" +                "   <htmlExtensions>html,htm,xml,js</htmlExtensions>\n" +                "   <hideFolders>\n" +                "       <folder>.*</folder>\n" +                "       <folder>CVS</folder>\n" +                "   </hideFolders>\n" +                "   <hideFiles>\n" +                "       <file>.*</file>\n" +                "   </hideFiles>\n" +                "   <defaultResourceTypes></defaultResourceTypes>\n" +                "   <types>\n" +                "       <type name=\"files\">\n" +                "           <url>%BASE_URL%files/</url>\n" +                "           <directory>%BASE_DIR%files</directory>\n" +                "           <maxSize>5M</maxSize>\n" +                "           <allowedExtensions>7z,aiff,asf,avi,bmp,csv,doc,docx,fla,flv,gif,gz,gzip,jpeg,jpg,mid,mov,mp3,mp4,mpc,mpeg,mpg,ods,odt,pdf,png,ppt,pptx,pxd,qt,ram,rar,rm,rmi,rmvb,rtf,sdc,sitd,swf,sxc,sxw,tar,tgz,tif,tiff,txt,vsd,wav,wma,wmv,xls,xlsx,zip</allowedExtensions>\n" +                "           <deniedExtensions></deniedExtensions>\n" +                "       </type>\n" +                "       <type name=\"images\">\n" +                "           <url>%BASE_URL%images/</url>\n" +                "           <directory>%BASE_DIR%images</directory>\n" +                "           <maxSize>2M</maxSize>\n" +                "           <allowedExtensions>bmp,gif,jpeg,jpg,png</allowedExtensions>\n" +                "           <deniedExtensions></deniedExtensions>\n" +                "       </type>\n" +                " \n" +                "   </types>\n" +                "    \n" +                "</config>";        //这个路径可以指定自己的路径 随意        String XML_FILE = "D:\\360Downloads\\aaa.xml";         SAXReader sax = new SAXReader();          Document  document = sax.read(new FileInputStream(XML_FILE));         //你得先得到根节点         Element root = document.getRootElement();        //然后得到根节点下指定名称的节点 例如“types”        List<Element> elements = root.elements("types");        for(Element e : elements){            e.detach();//循环删除那个types节点里的type节点        }        Element loaded = DocumentHelper.createElement("types");        //这个就简单了 创建节点然后添加属性 <type name="45" ></type>参考上面的xml字符串        Element dict = DocumentHelper.createElement("type");         dict.addAttribute("name", "45");        Element url = DocumentHelper.createElement("url");        url.setText("%BASE_URL%45/");        Element directory = DocumentHelper.createElement("directory");        directory.setText("%BASE_DIR%45");        Element maxSize = DocumentHelper.createElement("maxSize");        maxSize.setText("5M");        Element allowedExtensions = DocumentHelper.createElement("allowedExtensions");        allowedExtensions.setText("7z,aiff,asf,avi,bmp,csv,doc,docx,fla,flv,gif,gz,gzip,jpeg,jpg,mid,mov,mp3,mp4,mpc,mpeg,mpg,ods,odt,pdf,png,ppt,pptx,pxd,qt,ram,rar,rm,rmi,rmvb,rtf,sdc,sitd,swf,sxc,sxw,tar,tgz,tif,tiff,txt,vsd,wav,wma,wmv,xls,xlsx,zip");//创建完节点后一得一步一步的添加上去 所以得一点一点的add        Element deniedExtensions = DocumentHelper.createElement("deniedExtensions");        deniedExtensions.setText("");        dict.add(url);        dict.add(directory);        dict.add(maxSize);        dict.add(allowedExtensions);        dict.add(deniedExtensions);        loaded.add(dict);        root.add(loaded);        //这句wangxia 就是把更改好的xml文件在输出到本地硬盘中生成一个新的xml文件了        OutputFormat outformat = new OutputFormat();          outformat.setEncoding("UTF-8");          outformat.setNewlines(true);          outformat.setIndent(true);          outformat.setTrimText(true);          String rootPath = System.getProperty("user.dir");          out = new FileOutputStream("D:\\360Downloads\\aaa.xml" );          xmlwriter = new XMLWriter(out, outformat);          xmlwriter.write(document);      }}

这些代码实现的功能 主要是把xml文件读出来 ,进行节点的添加,删除,然后再重新生成新的xml文件覆盖原来的xml文件 因为这次吧 主要是因为ckfinder这个B插件 ,我得动态的改变他的ckfinder.xml配置文件所以才出此下策 ,我奉劝各位不要用这个B插件都不够上火的 ,真的 还不是假的 我这两天都他妈的改懵B了 真的

原创粉丝点击