SAX生成XML文件 

准备工作

创建一个SAXTransformerFactory 类对象

//创建一个 SAXTransformerFactory 类对象
SAXTransformerFactory tff = (SAXTransformerFactory)SAXTransformerFactory.newInstance();

通过SAXTransformerFactory 对象创建一个 Transformer 对象

//通过 SAXTransformerFactory 对象创建一个 TransformerHandler 对象
TransformerHandler handler = tff.newTransformerHandler();

设置 xml 文件编码格式和自动换行

//设置生成的 XML 文件编码格式
tr.setOutputProperty(OutputKeys.ENCODING, "utf-8");
//设置生成的 XML 文件自动换行
tr.setOutputProperty(OutputKeys.INDENT, "yes");

判断生成的 xml 文件 是否存在,不存在就创建一个新的

//如果不存在,就创建一个新的 XML 文件
File file = new File("newSchool.xml");
if (!file.exists()) {file.createNewFile();
}

创建一个 Result 对象,并且使其与 TransformerHandler对象关联

//创建一个Result 对象,并且使其与 TransformerHandler 对象关联
Result result = new StreamResult(new FileOutputStream(file));
handler.setResult(result);


利用 handler 对象进行 xml 文件内容的编写

打开 document

//打开 document
handler.startDocument();

生成根节点标签

AttributesImpl atts = new AttributesImpl();
//根节点开始标签
handler.startElement("", "", "School", atts);

设置字节点的属性和属性值 并创建子节点的开始标签

//设置属性和属性值
atts.addAttribute("", "", "id", "", "1");
//子节点开始标签
handler.startElement("", "", "student", atts);

创建子节点下的 name 节点并给其添加内容

atts.clear();  //清空子节点设的值
//字节点下name节点开始标签
handler.startElement("", "", "name", atts);
String name="小王";
handler.characters(name.toCharArray(), 0, name.length());
//字节点下name节点结束标签
handler.endElement("", "", "name");

有开始就结束,在 XML 当中标签都是成对出现的,下面就是结束标签,以及关闭 document对象

//子节点结束标签
handler.endElement("", "", "student");//根节点结束标签
handler.endElement("", "", "School");//关闭 document
handler.endDocument();

运行结果:

<?xml version="1.0" encoding="utf-8"?><School>
<student id="1">
<name>小王</name>
</student>
</School>

完整代码:

import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult;import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;public class CreateXMLBySAX {public static void main(String[] args) {//创建一个 SAXTransformerFactory 类对象SAXTransformerFactory tff = (SAXTransformerFactory)SAXTransformerFactory.newInstance();try {//通过 SAXTransformerFactory 对象创建一个 TransformerHandler 对象TransformerHandler handler = tff.newTransformerHandler();//通过 TransformerHandler 对象创建一个 Transformer 对象Transformer tr = handler.getTransformer();//设置生成的 XML 文件编码格式tr.setOutputProperty(OutputKeys.ENCODING, "utf-8");//设置生成的 XML 文件自动换行tr.setOutputProperty(OutputKeys.INDENT, "yes");//如果不存在,就创建一个新的 XML 文件File file = new File("newSchool.xml");if (!file.exists()) {file.createNewFile();}//创建一个Result 对象,并且使其与 TransformerHandler 对象关联Result result = new StreamResult(new FileOutputStream(file));handler.setResult(result);//利用 handler 对象进行 XML 文件内容的编写//打开 document
            handler.startDocument();//为了创建节点属性和属性值AttributesImpl atts = new AttributesImpl();//根节点开始标签handler.startElement("", "", "School", atts);//atts.clear();  //清空 atts 的值//设置属性和属性值atts.addAttribute("", "", "id", "", "1");//子节点开始标签handler.startElement("", "", "student", atts);atts.clear();  //清空子节点设的值//字节点下name节点开始标签handler.startElement("", "", "name", atts);String name="小王";handler.characters(name.toCharArray(), 0, name.length());//字节点下name节点结束标签handler.endElement("", "", "name");//子节点结束标签handler.endElement("", "", "student");//根节点结束标签handler.endElement("", "", "School");//关闭 document
            handler.endDocument();} catch (TransformerConfigurationException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();}}
}

转载于:https://www.cnblogs.com/szj-ang/p/7492618.html

Java——SAX生成XML文件相关推荐

  1. 2018.4.13 用java配置/生成Xml文件 结合IO流知识点

    自己创建本地文件Hello.txt 里面有数据 小明/23/增城/广东 小花/12/浦东/上海 StudentManager.java package com.lanqiao.dmeo7;import ...

  2. java sax读写xml文件_使用SAXReader读取xml文件

    搜索热词 原XML文件: 99999 5275 0 001 9999 20151221 018888 0100010 5275 6600 99898989 000 c1aaaax QD00112210 ...

  3. JAVA SAX解析XML文件

    [代码] [Java]代码 view sourceprint? 001 package SAXparse; 002 003 004 import java.io.FileInputStream; 00 ...

  4. android sax创建xml文件

    前两篇文章,对sax解析xml的方式简单说明,实现解析的功能.下面用sax来创建xml文件. 具体的如何使用sax创建xml,在程序中都加了相关的注释,还是直接上代码. package cn.com. ...

  5. oxygen 生成java对象_利用oxygen编辑并生成xml文件,并使用JAVA的JAXB技术完成xml的解析...

    首先下载oxygen软件(Oxygen XML Editor),目前使用的是试用版(可以安装好软件以后get trial licence,获得免费使用30天的权限,当然这里鼓励大家用正版软件!!!) ...

  6. java jdom 设置第1行_Java通过jdom操作生成XML文件的实例代码下载

    工作需要,要生成xml文件,所以做了个小demo分享一下. 看代码吧~ main()里面没什么好说的 该写的都写了public static void main(String[] args) { // ...

  7. java指定sql生成xml_SQL Server根据查询结果,生成XML文件

    /* 'bcp' 不是内部或外部命令,也不是可运行的程序? 看看在C:\Program Files\Microsoft SQL Server\80\Tools\Binn里面有没有bcp.exe这个文件 ...

  8. SAX 解析XML文件:将XML转换成Java对象

    本博客介绍的是解析本地XML文件,解析网络上的XML 本文写得比较简略,实际上项目应用更多的是解析网上的xml资源 使用SAX 处理XML需要一个Handler 对象,一般继承org.xml.sax, ...

  9. java dom创建xml文件_Java 如何使用dom方式读取和创建xml文件

    Java 如何使用dom方式读取和创建xml文件 发布时间:2020-11-11 17:08:31 来源:亿速云 阅读:101 作者:Leah 本篇文章给大家分享的是有关Java 如何使用dom方式读 ...

最新文章

  1. 【android】错误集锦及解决办法
  2. sql超低级用法(防遗忘)
  3. [Node.js]get/post请求
  4. CI Weekly #11 | 微服务场景下的自动化测试与持续部署
  5. 微信小程序wx.request请求服务器json数据并渲染到页面
  6. python线程池的使用
  7. ai取代程序员_AI取代了程序员的工作,程序员将何去何从?
  8. YouTube视频设置水印
  9. Truck History POJ - 1789 最小生成树Prim
  10. UINO优锘:干货分享 | 虚拟现实建模基础
  11. linux环境下的jmeter测试
  12. 虚假共识—阿比勒尼悖论:“枪打出头鸟”与“事后诸葛亮”
  13. 计算几何入门 1.3:凸包的构造——增量构造法
  14. SAP物料主数据视图维护状态及标识关系表
  15. CentOS7.6 无网络环境安装MySQL5.7.x
  16. Android开发使用LocationManager实现定位服务
  17. jfinal连接oracle_JFinal中多数据源的配置[本文是mysql+oracle]
  18. slxrom+v.21+原生android+4.2,小米MIX2S 魔趣OS 安卓9 MagiskV21版 完美ROOT 纯净完美 原生极简 纯净推荐...
  19. 在桌边垒砖块,求砖块右端距离桌边最大距离
  20. ceph节点journal盘更换

热门文章

  1. Activiti实战. 导读
  2. springmvc简述
  3. Android App截包工具
  4. xss跨站脚本,纯安全测试干货分享-建议收藏
  5. .net通过获取客户端IP地址反查出用户的计算机名
  6. Java Web之POI操作Excel2016模板
  7. EM算法 大白话讲解
  8. 【kAriOJ】离散数学春季学期编程测试 1
  9. 使用wxSqlite3来解决sqlite加密问题zz
  10. 设置winfrom窗体透明度,拖动,任务栏中显示窗体