XML文件生成


// 主要的包
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.helpers.AttributesImpl;


// 大体思路

// 通过工厂创建实体
SAXTransformerFactory fac = (SAXTransformerFactory) SAXTransformerFactory
.newInstance();
TransformerHandler handler = null;
OutputStream outStream = null;

try {
handler = fac.newTransformerHandler();
// 输出文件参数设置
Transformer tf = handler.getTransformer();
tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); // 编码格式
tf.setOutputProperty(OutputKeys.INDENT, "yes"); // 是否自动缩进
tf.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); // 是否忽略xml声明

File file = new File("E:\\path\\file.xml");// 注意:文件会自动创建,但文件路径(E:\\path)需存在,否则报异常
outStream = new FileOutputStream(file);
Result rsxml = new StreamResult(outStream);// 注意:创建流的构造函数可以指定File文件 也可指定为String路径,
// 但指定为包含中文的路径可能会出现"java.net.MalformedURLException: unknown protocol: e"的异常

handler.setResult(rsxml);

// 文档开始
handler.startDocument();

// 创建xml节点属性对象
AttributesImpl atts = new AttributesImpl();
handler.startElement("", "", "Events", atts); // 开始Events节点

// 创建新的节点属性对象
atts = new AttributesImpl();
// 为节点元素添加属性
// atts.addAttribute(String uri, String localName, String qName, String type, String value)
// 通常我们只需设置 属性名称qName(第三个参数)和属性值value(第五个参数)
atts.addAttribute("", "", "AttributeName1", "", "AttributeValue1");
atts.addAttribute("", "", "AttributeName2", "", "AttributeValue2");

// 写入节点
// handler.startElement(String uri, String localName, String qName, Attributes attributes)
// 通常我们只需设置节点名称qName(第三个参数)和属性对象attributes(第四个参数)
handler.startElement("", "", "Event", atts);// 开始Event节点,并且附加属性atts
handler.endElement("", "", "Event"); // 结束Event节点

// todo

handler.endElement("", "", "Events"); // 结束Events节点
// 文档结束
handler.endDocument();

} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} finally {
if (outStream != null)
try {
outStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值