使用SAX方式生成XML文件有如下步骤:
- 创建SAXTransformerFactory对象
- 通过SAXTransformerFactory对象创建TransformerHandler对象
- 通过TransformerHandler对象获得Transformer对象
- 设置Transformer对象的输出属性(
setOutputProperty()
) - 创建Result对象,并将目的XML文件与其关联
- 通过TransformerHandler对象的
setResult()
方法将Result与TransformerHandler关联起来 - 通过TransformerHandler的
startDocument()
方法开启文档(一并使用endDocument()
方法关闭文档,以防忘记) - 通过TransformerHandler的
startElement()
方法新建节点(一并使用endElement()
方法关闭节点;使用characters()
方法设置节点值)
以上就是使用SAX方式生成XML文件的基本步骤。
下面来看代码:
创建SAXTransformerFactory对象(需要进行强转,因为返回的是TransformerFactory的对象):
// 创建SAXTransformerFactory对象
SAXTransformerFactory factory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
创建TransformerHandler的对象:
// 通过SAXTransformerFactory对象创建TransformerHandler对象
TransformerHandler handler = factory.newTransformerHandler();
创建Transformer对象:
// 通过Handler创建Transformer对象
Transformer transformer = handler.getTransformer();
设置Transformer对象的输出属性(设置编码为UTF-8,设置换行):
// 设置Transformer的属性 transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
创建Result对象,并将目的XML文件与其关联:
// 创建Result对象,并将目的XML文件与其关联
Result result = new StreamResult(dest);
将Result对象与TransformerHandler关联起来:
// 将handler与result关联起来
handler.setResult(result);
开启文档:
// 开启文档
handler.startDocument();
新建节点:
startElement()
方法的第一个参数为URI,第二个为localName,第三个为节点名称qName,第四个为属性Attributes
// 新建节点
handler.startElement("", "", "bookstore", null);