当前位置:  技术问答>java相关

java对xml文件的读写操作!!!!

    来源: 互联网  发布时间:2017-03-30

    本文导语:  哪位高手是否可以提供一段java对xml文件进行读写操作的代码。(是不是一定要用到 org这个包,是不是一定要用到JDOM)如果要,能否提供org包的下载地址!!!! | package util.common; import java....

哪位高手是否可以提供一段java对xml文件进行读写操作的代码。(是不是一定要用到
org这个包,是不是一定要用到JDOM)如果要,能否提供org包的下载地址!!!!

|
package util.common;

import java.io.*;
import java.util.*;


import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;


public class XMLProperties
{
    private boolean autoSave = true;
    private File file;
    private Document doc;
    private Map propertyCache = new HashMap();

    public XMLProperties(String file, boolean autoSave, boolean validate)
            throws JDOMException
    {
        this.autoSave = autoSave;
        this.file = new File(file);
        SAXBuilder builder = new SAXBuilder(validate);
        try
        {
            doc = builder.build(file);
        }
        catch (JDOMException ex)
        {
            throw new JDOMException("构造过程出现错误! " + ex);
        }
    }

    public XMLProperties(String file, boolean autoSave)   throws JDOMException
    {
        this(file, autoSave, false);
    }

    public XMLProperties(String file)   throws JDOMException
    {
        this(file, false, false);
    }
    
    public boolean isAutoSave() {  return autoSave; }

    public void setAutoSave(boolean autoSave)   {   this.autoSave = autoSave;   }

    public synchronized void saveProperties() throws IOException
    {
        if(autoSave == false)   return;

        XMLOutputter out = new XMLOutputter("    ",true, "GB2312");
        File temp = null;
        FileWriter writer = null;
        boolean isError = false;
        try
        {
            //先生成一个临时文件
            temp = new File(file.getParent(), file.getName() + ".tmp");
            writer = new FileWriter(temp);
            out.output(doc, writer);
        }
        catch (IOException ex)
        {
            isError = true;
            throw new IOException("生成临时文件出现错误!" + ex);
        }
        finally
        {
            writer.close();
        }
        //备份源文件,生成新文件
        if(isError == false)
        {
            File bak = new File(file.getParent(), file.getName() + ".bak");
            //删除原来的备份文件
            if(bak.exists())    bak.delete();
            boolean isSuccess = file.renameTo(bak);
            file.delete();
            //临时文件变成正式文件
            isSuccess = temp.renameTo(file);
            if(isSuccess == false)
                throw new IOException("备份文件过程出现错误!");
        }
    }

    public String getPorperty(String name)
    {
        if(propertyCache.containsKey(name))
            return propertyCache.get(name).toString();

        //查找指定的元素元素
        Element element = this.findOnly(name);
        if(element == null) return null;

        String value = element.getTextTrim();
        propertyCache.put(name, value);
        return value;
    }

    public String getPorperty(String name, String attr)
    {
        String nameAttr = name + ":" + attr;
        if(propertyCache.containsKey(nameAttr))
            return propertyCache.get(nameAttr).toString();

        //查找指定的元素元素
        Element element = this.findOnly(name);
        if(element == null) return null;

        String value = element.getAttributeValue(attr);
        propertyCache.put(nameAttr, value);
        return value;
    }

    public void setProperty(String name, String value) throws IOException
    {
        propertyCache.put(name, value);

        //查找指定的元素元素
        Element element = this.findCreate(name);
        element.setText(value);
        saveProperties();
    }
    
    public void setProperty(String name, String attr, String value) throws IOException
    {
        String nameAttr = name + ":" + attr;
        propertyCache.put(nameAttr, value);

        //查找指定的元素元素
        Element element = this.findCreate(name);
        element.setAttribute(attr, value);
        saveProperties();
    }

    public void deleteProperty(String name) throws IOException
    {
        if(propertyCache.containsKey(name))
            propertyCache.remove(name);

        Element element = this.findOnly(name);
        if(element != null)  element.detach();
        saveProperties();
    }

    public void deleteProperty(String name, String attr) throws IOException
    {
        String nameAttr = name + ":" + attr;
        if(propertyCache.containsKey(nameAttr))
            propertyCache.remove(nameAttr);

        Element element = this.findOnly(name);
        if(element != null) element.removeAttribute(attr);
        saveProperties();
    }

    public String[] getChildrenProperties(String parent)
    {
        //分解元素的名称
        String[] propName = parsePropertyName(parent);
        Element element = doc.getRootElement();
        //遍历搜索匹配的元素
        for (int i = 0; i 

    
 
 

您可能感兴趣的文章:

  • Java读写包括中文的txt文件时不同编码格式问题解决
  • 请问JAVA如何读写注册表
  • java中如何实现串口读写?
  • JAVA Applet能够读写文件吗?
  • Java中有没有什么类来实现读写注册表文件?
  • VCard格式读写的Java类库 cardme
  • Java读写MPX文件包 MPXJ
  • 怎样用JAVA函数读写注册表,有这样的函数吗
  • 求救,java中读写excel的问题
  • 有什么办法自己用java编写一个数据库读写的文件呀?
  • RSS的Java读写库 RSSpect
  • java中如何实现读写类似vc中结构数据?
  • 高分求够JAVA读写XML方面的电子书籍下载地址
  • 请问:java语言能读写注册表吗?多谢多谢,
  • 如何用java在linux中读写串口啊?请高手指点
  • 用JAVA的IO怎么实现图形文件(GIF/JPG)的读写,100分奉送!
  • 学习JAVA时写了个读写Ini文件的类,赏脸的朋友请进来留个话吧……
  • Java 配置文件读写 Commons Configuration
  • Java的中文读写问题,有请各位了。
  • 分享关于JAVA 中使用Preferences读写注册表时要注意的地方
  • java多线程读写文件示例
  • java操作excel2007文档介绍及代码例子
  • java执行操作系统命令的问题:如何判断多个操作系统?
  • java初学者问:java操作平台是什么?用什么工具?
  • 我是java新手,请问java中与平台相关的操作是怎样实现的
  • Java的XML操作类库 JDOM
  • Java操作系统 JNode
  • Java 操作 Excel 的类库 jExcelApi
  • JAVA与数据库操作问题
  • 请问又没有java控制.exe或操作注册表的方法?
  • Java的Excel操作包 OpenXLS
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • JAVA编译的CLASS文件可以反编译为JAVA文件吗?
  • 保存java.sh文件时,多出一个java.sh~文件
  • 用什么工具可以把JAVA的.CLASS文件反编译成.JAVA文件??
  • 请问把.class文件反编译为.java文件的工具有什么???能恢复到原来的.java文件吗???
  • 一个.java文件中怎样来调用另一个.java文件中的变量及其它东西!
  • 用java读中文linux中的文件是正确的,用java读英文linux版本中的文件是乱码,如何使英文linux读出的文件数据也是中文的?
  • java文件复制代码片断(java实现文件拷贝)
  • java读取csv文件示例分享(java解析csv文件)
  • 我刚学java,想请教一下,我在文本中创建了一个接口,一个类,还有一个扩展类,保存为.java文件时,如何给文件名?
  • 请教:有没有把java编译好的.java和.class文件编译成各个平台下的可执行文件??.exe?着急着急
  • java文件操作之java写文件简单示例
  • java复制文件和java移动文件的示例分享
  • java读取文件内容的三种方法代码片断分享(java文件操作)
  • 编译前的java文件没有,只有class文件
  • 我用java编了一个程序,是多个java文件,属于一个包,需要联编,但我不会
  • 低级问题:.java文件交付用户怎么运行,难道也是DOS下:java xx.java?有没有.exe?
  • 我在jbuilder中新建一个servlet,源程序为java文件,是怎么从java到servler转换的?
  • 求救!!如何在java程序中调用外部非java的exe文件?
  • 谁有办法用java执行于java.exe不在一个目录的class文件?
  • 怎样把CLASS文件转成JAVA文件
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: stringflavor定义及介绍


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3