`
keating
  • 浏览: 170028 次
  • 性别: Icon_minigender_1
  • 来自: weihai
社区版块
存档分类
最新评论

Java读写XML工具类

    博客分类:
  • Java
阅读更多
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 * 读xml文件
 */
package util.xml;

import java.io.*;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import org.xml.sax.SAXException;

public class ReadXML {

    private Vector<Vector<String>> v = null;
    private DocumentBuilder builder;
    private Document doc;

    public ReadXML() {
        try {
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            builder = factory.newDocumentBuilder();
        } catch (ParserConfigurationException ex) {
            Logger.getLogger(ReadXML.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public Vector<Vector<String>> read(String fileName,String oneName,String[] xmlNames) {
        File file = new File(fileName);
        if (!file.exists()) {
            return null;
        }
        try {
            doc = builder.parse(fileName);
        } catch (SAXException ex) {
            Logger.getLogger(ReadXML.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(ReadXML.class.getName()).log(Level.SEVERE, null, ex);
        }
        v = new Vector<Vector<String>>();
        try {
            NodeList nl = doc.getElementsByTagName(oneName);
            Vector<String> v_s;
            for (int i = 0; i < nl.getLength(); i++) {
                v_s = new Vector<String>();
                for (int j = 0; j < xmlNames.length; j++) {
                    v_s.add(doc.getElementsByTagName(xmlNames[j]).item(i).getTextContent());
                }
                v.add(v_s);
            }
        } catch (Exception ex) {
            Logger.getLogger(ReadXML.class.getName()).log(Level.SEVERE, null, ex);
        }
        return this.v;
    }
}

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 * 写xml文件
 */
package util.xml;

/**
 *
 * @author Administrator
 */
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStreamWriter;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;

/**
 * 功能:
 * @author yaos  email: yaos@isoftstone-ai.com
 * @date 2008 11 25
 */
public class WriteXML {

    private DocumentBuilder db;
    private Document doc;
    //配置信息
    private String fileName;
    private String configName;
    private String oneName;
    private String[] xmlNames;

    public WriteXML(String fileName, String configName, String oneName, String[] xmlNames) {
        try {
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            db = dbf.newDocumentBuilder();
        } catch (ParserConfigurationException ex) {
            Logger.getLogger(WriteXML.class.getName()).log(Level.SEVERE, null, ex);
        }
        this.fileName = fileName;
        this.configName = configName;
        this.oneName = oneName;
        this.xmlNames = xmlNames;
    }

    public void write(Vector<Vector<Object>> v) {
        this.deleteFile();//删除文件
        this.doc = db.newDocument();
        Element root = doc.createElement(configName);
        for (Vector<Object> v_s : v) {//保存
            root.appendChild(this.saveOne(v_s));
        }
        this.doc.appendChild(root);
        this.export();//导出文件
    }

    private void deleteFile() {
        File file = new File(fileName);
        if (file.exists()) {
            file.delete();
        }
    }
    //下面的方法是写xml到.xml的文档

    private void export() {
        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer transformer;//此实例可以用于处理来自不同源的 XML,并将转换输出写入各种接收器。
        try {
            transformer = tf.newTransformer();
            DOMSource source = new DOMSource(doc);//创建带有 DOM 节点的新输入源
            transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");//设置转换中实际的输出属性
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");//设置转换中实际的输出属性
            OutputStreamWriter pw = new OutputStreamWriter(new FileOutputStream(fileName), "UTF-8");
            StreamResult result = new StreamResult(pw);//从字节流构造 StreamResult 充当转换结果的持有者,可以为 XML、纯文本、HTML 或某些其他格式的标记
            transformer.transform(source, result);//将 XML Source 转换为 Result
            pw.close();//关闭
        } catch (Exception ex) {
            Logger.getLogger(WriteXML.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    //将一行数据保存在一个excel中

    private Element saveOne(Vector<Object> v_s) {//用Object
        Element root = doc.createElement(oneName);
        for (int i = 0; i < v_s.size(); i++) {
            Element e = doc.createElement(xmlNames[i]);//
            if (v_s.get(i) == null) {
                e.setTextContent("");//这里有个异常!
            } else {
                e.setTextContent(v_s.get(i).toString());//这里有个异常!
            }
            root.appendChild(e);
        }
        return root;
    }
}

一个例子
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package util.xml;

/**
 *
 * @author Administrator
 */
public class XMLStruct {
    public static String fileName = "cable.xml";
    public static String[] xmlNames = {"始","末","长度"};
    public static String configName = "totalNodes";
    public static String oneName = "subNodes";
}
分享到:
评论
1 楼 keating 2010-02-07  
网上随处可淘,写xml文件注意编码即可。

相关推荐

    Java解析XML工具类--(java源码)

    * 本类是专门解析XML文件的,主要用于为系统读取自己的配置文件时提供最方便的解析操作 * @author HX * */ public class XmlManager { /** * 得到某节点下某个属性的值 * @param element 要获取属性的...

    java通用解析XML工具类

    本文将详细介绍如何创建一个Java通用的XML解析工具类,以便于在项目中复用和简化XML处理。 首先,我们来看DOM解析方式。DOM解析器会将整个XML文档加载到内存中,形成一棵树形结构,便于对XML进行随机访问。以下是一...

    XML读写工具类

    本人没分了,特别来分享一下,通用的XML读写工具类,同志们下下绝对不后悔

    一次代码重构之旅-快速读写xml文件工具类封装

    在IT行业中,代码重构是一项重要的技能,它有助于提高...总之,这次重构之旅旨在通过创建一个高效的XML工具类,提高代码的可复用性和性能。对于任何需要处理XML数据的Java开发者来说,这是一个值得学习和借鉴的案例。

    java 解析xml 多级

    而SAX解析器采用事件驱动的方式,逐行读取XML文件,适合处理大型XML文件以避免内存消耗。 对于多级XML,DOM解析更便于操作。以下是一个使用Java DOM解析XML的步骤: 1. 引入必要的库: 需要引入`javax.xml....

    Java读取XML文件自制工具类

    //通过文件路径及文件名读取xml public XMLReader(String path, String filename); //初始化读取包下的的XML文件 public XMLReader(Package package1, String fileName); //读取WEB-INF下的xml文件 public XMLReader...

    JAVA对象序列化保存为XML文件的工具类

    另一方面,`objectXmlDecoder`方法打开XML文件,创建一个`XMLDecoder`实例,读取XML数据并将其转换回Java对象。这些对象被添加到一个`ArrayList`中并返回。注意,如果XML文件中包含多个序列化的对象,`XMLDecoder`将...

    用java读取修改xml文件的代码实现

    首先,需要为XML元素创建对应的Java类,然后使用`javax.xml.bind.JAXBContext`和`Unmarshaller`进行解码,使用`Marshaller`进行编码。 4. **DOM4J**: DOM4J是一个流行的Java XML API,提供了丰富的功能,包括DOM...

    java读取xml文件

    Java 读取 XML 文件是 Java 开发中常见的一项任务,XML(eXtensible Markup Language)作为一种可扩展标记语言,广泛用于数据交换、配置存储等领域。本教程将深入讲解如何在 Java 中处理 XML 文件,同时涉及 XML 的 ...

    java操作xml工具包

    Java操作XML工具包是开发过程中不可或缺的部分,尤其是在处理与数据交换、配置文件或者与服务器通信相关的任务时。这里提到的两个关键库——XStream和DOM4J,都是Java中广泛使用的XML处理工具。 XStream是一个Java...

    【强2】30个java工具类

    [工具类] XML工具类2 .java.txt [工具类] 测试Mysql的最大连接数 .java.txt [工具类] 读取、打印输出、保存xml .java.txt [工具类] 分页split_page.jsp .jsp.txt [工具类] 获得汉字拼音首字母的java工具类.java.txt ...

    30个java工具类

    [工具类] XML工具类2 .java.txt [工具类] 测试Mysql的最大连接数 .java.txt [工具类] 读取、打印输出、保存xml .java.txt [工具类] 分页split_page.jsp .jsp.txt [工具类] 获得汉字拼音首字母的java工具类.java.txt ...

    c#和java读写xml辅助工具

    在IT行业中,无论是C#还是Java,都有强大的库支持对XML文件的读写操作。本教程将详细介绍如何使用C#和Java来创建高效的XML辅助工具,以简化XML文件的处理。 ### C# XML处理 在C#中,我们可以利用.NET Framework...

    java xml-repair修复工具类

    在实际应用中,XML-repair工具类通常集成到XML解析或处理流程中,如在读取XML文件之前先进行修复,或者在接收到XML数据后立即进行处理。这样可以确保后续的操作,如XML解析、DOM构建、XPath查询等,都能顺利进行。 ...

    java读取XMl数据

    本文将深入探讨如何使用Java来读取XML数据。 首先,我们需要了解XML的基本结构。XML文档由元素(Element)、属性(Attribute)、文本内容(Text Content)等组成。每个XML文档都有一个根元素,其他元素则嵌套在根...

    xml与实体类转换工具

    XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据...`util`工具类和`MyTest`测试类提供了一个实现框架,通过引入相应的依赖,开发者可以快速地将XML数据转化为可操作的Java对象,反之亦然。

    java 读取xml文件生成树形图

    在Java编程中,读取XML文件并将其转换为树形结构是一种常见的操作,尤其是在处理配置文件、数据交换或解析XML文档时。以下是一篇详细解释如何实现这一过程的文章。 首先,我们需要了解XML(eXtensible Markup ...

    常用的java工具类

    1.[工具类] 读取、打印输出、保存xml .java 2.[工具类] Java中计算任意两个日期之间的工作天数 .java 3.[工具类] MD5 .java 4.[工具类] 时间工具TimeUtil.java 5.[工具类] 通信服务端simpleServer 6.[工具类] 使用...

    XML解析工具类

    本工具类包含了对XML进行解析的必备组件,无需额外安装其他依赖,下载后即可直接应用于项目中。 1. **DOM解析器** DOM(Document Object Model)是XML文档的一种树形表示方式,它将XML文档转化为内存中的对象模型...

Global site tag (gtag.js) - Google Analytics