通过解析Xml 之SAX 方法可以详细了解SAX,这里不做介绍,只提供代码:
案例如下:
//1生成一个SAXTransformFacotry 对象
SAXTransformerFactory transformerFactory = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
try {
//2通过SAXTransformFacotry 对象创建一个TransformerHandler 对象
TransformerHandler handler = transformerFactory.newTransformerHandler();
// 3通过TransformerHandler 对象创建一个transformer 对象
Transformer transformer = handler.getTransformer();
// 4通过transformer 可以设置输出格式, 注意必须在hanlder 设置result之前设置才有效
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
File file = new File("src/newbooks.xml");
if(!file.exists()) {
file.createNewFile();
}
//5 创建一个Result 对象 并且将其与handler 对象关联起来
Result result = new StreamResult(new FileOutputStream(file));
handler.setResult(result);
//6 利用hanlder 对象对xml 进行编写
//打开文档
handler.startDocument();
AttributesImpl attr = new AttributesImpl();
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 (TransformerConfigurationException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}