1.SAX方式创建XML的方法:
1.创建一个SAXTransformerFactory对象
2.通过SAXTransformerFactory对象的newTransformerhandler方法创建一个TransformerHandler对象
3.通过TransformerHandler对象的getTransformer方法创建一个Transformer对象
4.通过Transforemer对象的setOutput方法设置属性
5.通过StreamResult方法创建一个Result对象,指向要输出的XML文件
6.通过TransformerHandler对象的setResult方法将Result对象与TransformerHandler对象关联
7.通过TransformerHandler对象编写XML文件的内容
7.1通过TransformerHandler对象的startDocument方法打开Document
7.2通过TransformerHandler对象的startElement方法创建节点
7.3通过TransformerHandler对象的characters方法设置节点的内容
7.4通过TransformerHandler对象的end###方法关闭节点和Document
1.SAX方式创建XML的JAVA代码:
//创建一个SAXtransformerfactory对象
SAXTransformerFactory stf = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
try {
//通过SAXTransformerFactory对象创建一个TransfomerHandler对象
TransformerHandler handler = stf.newTransformerHandler();
//通过transformerHandler对象创建一个transformer对象
Transformer tf = handler.getTransformer();
//设置Transfomer对象的属性
tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
tf.setOutputProperty(OutputKeys.INDENT, "yes");
//创建一个Result的对象,将其与handler关联
File file = new File("src/res/SAXCreate.xml");
if(!file.exists()){
file.createNewFile();
}
Result result = new StreamResult(new FileOutputStream(file));
handler.setResult(result);
//通过Handler编写XML的内容
//打开Document
handler.startDocument();
AttributesImpl attr = new AttributesImpl();
//创建根节点bookstore
handler.startElement("", "", "bookstore", attr);
attr.clear();
attr.addAttribute("", "", "id", "", "1");
handler.startElement("", "", "book", attr);
attr.clear();
handler.startElement("", "", "name", attr);
handler.characters("颈椎病康复指南".toCharArray(), 0, "颈椎病康复指南".length());
handler.endElement("","","name");
//关闭各节点
handler.endElement("", "", "book");
handler.endElement("", "", "bookstore");
handler.endDocument();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}