OAF_文件系列6_实现OAF导出XML文件javax.xml.parsers/transformer(案例)
发布日期:2025-04-22 14:26:21 浏览次数:8 分类:精选文章

本文共 5757 字,大约阅读时间需要 19 分钟。

通过Java创建XML文件:详细实现与测试

在Oracle ERP项目开发中,数据的存储和交换通常需要以XML格式进行处理。通过Java程序创建XML文件是非常常见的任务之一。本文将详细介绍如何使用Java的DOM API创建和写入XML文件,并对实现进行测试验证。

一、摘要

通过javax.xml.parsersjavax.xml.transform包,可以轻松地创建和写入XML文件。本文将介绍以下步骤:

  • 创建XML文件
  • 使用DocumentBuilderFactoryDocumentBuilder创建XML文件并添加根节点
  • 创建和填充XML节点
  • 使用FileOutputStreamOutputStreamWriter将XML文件写入本地文件系统
  • 二、实现分析

    1. 创建exportEmployee.java程序

    首先,我们需要创建一个Java类exportEmployeeXML,该类负责将员工信息写入XML文件。以下是类的基本结构:

    package bxj.oracle.apps.ap.java;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.OutputStreamWriter;
    import java.io.Writer;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.OutputKeys;
    import javax.xml.transform.Result;
    import javax.xml.transform.Source;
    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 org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Text;
    public class exportEmployeeXML {
    private void ExportEmployeeXML() {
    try {
    // 创建文件
    File empxmlfile = new File("/u2/VIS/visappl/gavin/employeexml/employeewxml.xml");
    // 创建DocumentBuilderFactory和DocumentBuilder
    DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
    Document doc = docBuilder.newDocument();
    // 创建根节点
    Element root = doc.createElement("Header");
    doc.appendChild(root);
    // 创建EMPLOYEE节点
    Element emp = doc.createElement("EMPLOYEE");
    root.appendChild(emp);
    // 创建子节点
    Element empid = doc.createElement("EMPLOYEEID");
    emp.appendChild(empid);
    Text empid_text = doc.createTextNode("1");
    empid.appendChild(empid_text);
    Element empnum = doc.createElement("EMPLOYEENUM");
    emp.appendChild(empnum);
    Text empnum_text = doc.createTextNode("FS_0001");
    empnum.appendChild(empnum_text);
    Element empname = doc.createElement("EMPLOYEENAME");
    empname.setAttribute("GENDER", "MALE");
    emp.appendChild(empname);
    Text empname_text = doc.createTextNode("BaoXinjian");
    empname.appendChild(empname_text);
    Element emptype = doc.createElement("EMPLOYEETYPE");
    emp.appendChild(emptype);
    Text emptype_text = doc.createTextNode("INTERAL");
    emptype.appendChild(emptype_text);
    Element empcountry = doc.createElement("COUNTRY");
    emp.appendChild(empcountry);
    Text empcountry_text = doc.createTextNode("CN");
    empcountry.appendChild(empcountry_text);
    Element empaddr = doc.createElement("ADDRESS");
    emp.appendChild(empaddr);
    Text empaddr_text = doc.createTextNode("Hangzhou");
    empaddr.appendChild(empaddr_text);
    Element empdesc = doc.createElement("DESCRIPTION");
    emp.appendChild(empdesc);
    Text empdesc_text = doc.createTextNode("Test Employee XML Export");
    empdesc.appendChild(empdesc_text);
    // 输出流
    FileOutputStream fos = new FileOutputStream(empxmlfile);
    OutputStreamWriter osw = new OutputStreamWriter(fos);
    callDomWriter(doc, osw, "UTF-8");
    osw.close();
    fos.close();
    } catch (Exception ex) {
    ex.printStackTrace();
    }
    }
    public void callDomWriter(Document doc, Writer writer, String encoding) {
    try {
    Source source = new DOMSource(doc);
    Result res = new StreamResult(writer);
    Transformer xformer = TransformerFactory.newInstance().newTransformer();
    xformer.setOutputProperty(OutputKeys.ENCODING, encoding);
    xformer.transform(source, res);
    } catch (TransformerConfigurationException e) {
    e.printStackTrace();
    } catch (TransformerException e) {
    e.printStackTrace();
    }
    }
    public exportEmployeeXML() {
    }
    public static void main(String[] args) {
    System.out.println("gavin main Start");
    exportEmployeeXML exportEmployeeXML = new exportEmployeeXML();
    exportEmployeeXML.ExportEmployeeXML();
    System.out.println("gavin main End");
    }
    }
    2. 实现解析的主要过程
  • 创建XML文件:首先,我们需要创建一个新的XML文件。可以使用File类来指定文件路径,并使用FileOutputStream来写入文件内容。

  • DocumentBuilderFactory和DocumentBuilder:通过DocumentBuilderFactory.newInstance()获取DocumentBuilderFactory实例,然后调用newDocumentBuilder()方法获取DocumentBuilder实例。使用DocumentBuilder.newDocument()创建一个新的XML文档。

  • 创建节点

    • 使用document.createElement("节点名称")创建元素节点。
    • 使用document.createTextNode("节点内容")创建文本节点。
    • 将节点添加到父节点中,例如element.appendChild(empnum)
  • 文件输出流:使用FileOutputStreamOutputStreamWriter将XML文件写入本地文件系统。需要注意文件路径的正确性,并确保输出流已正确关闭。

  • 三、运行测试

    1. 运行测试

    运行上述Java程序,确保以下几点:

  • 运行环境:确认Java开发环境(JDK)已正确安装,并且项目路径已添加到环境变量中。
  • 依赖 jar 包:确保项目中包含必要的jar包,包括javax.xml.parsersjavax.xml.transform相关包。
  • 文件路径:检查文件路径是否正确,确保程序能够访问目标文件夹和文件。
  • 2. 确定XML文件

    运行完成后,程序会将生成的XML文件写入指定路径。可以通过文件管理工具(如Windows资源管理器)查看生成文件,确保文件格式和内容正确无误。

    3. 查看XML文件

    使用XML编辑器(如Notepad++、Visual Studio Code等)打开生成的XML文件,检查文件格式是否为<?xml version="1.0"?>,并确保所有标签正确闭合。如果发现任何问题,需要回去检查代码。

    结论

    通过上述方法,我们可以轻松地使用Java程序创建和写入XML文件。DOM API提供了强大的工具来操作XML数据,适合处理结构化数据存储和交换。通过本地测试和验证,我们可以确保生成的XML文件格式和内容符合预期。

    上一篇:OAuth 2 深入介绍
    下一篇:O2OA RCE 远程命令执行漏洞复现(CVE-2022-22916)

    发表评论

    最新留言

    留言是一种美德,欢迎回访!
    [***.207.175.100]2025年04月09日 01时08分17秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章