注:transformer 对XML属性的设置如果放在setResult之后就不会生效,而且setResult()必须在startDocument()之前。
以SAX方式写入
- SAXTransformerFactory tff = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); //创建工厂实例
- TransformerHandler tfh = tff.newTransformerHandler(); //创建格式处理对象
- Transformer tf = tfh.getTransformer(); //通过Transformer对象对生成的XML格式进行设置
- tf.setOutputProperty(OutputKeys.ENCODING, “UTF-8”); //设置XML文件编码格式
tf.setOutputProperty(OutputKeys.INDENT, “Yes”); //设置XML文件自动换行- File file = new File(“src/res/books1.xml”); //新建或打开文件
if (!file.exists()) { //对文件的存在性判断
file.createNewFile();
}- Result result = new StreamResult(new FileOutputStream(file)); //生成Result对象
- tfh.setResult(result); //将TransformerHandler与Result关联
- tfh.startDocument(); //利用TransformerHandler对象开始创建Document
AttributesImpl attr = new AttributesImpl(); //创建属性集合- tfh.startElement(“”, “”, “Books”, attr); //开始根节点
attr.clear(); //清空属性
attr.addAttribute(“”, “”, “属性名”, “”, “属性值”); //向属性集合中添加属性- tfh.startElement(“”, “”, “Book”, attr); //开始子节点
attr.clear();- tfh.startElement(“”, “”, “Name”, attr); //开始孙子节点
tfh.characters(item.getName().toCharArray(), 0, item.getName().length());
tfh.endElement(“”, “”, “Name”); //结束孙子节点
tfh.endElement(“”, “”, “Book”); //结束子节点
tfh.endElement(“”, “”, “Books”); //结束根节点
tfh.endDocument(); //结束Document