package org.succlz123.androidpixeldimengenerator.generator; import org.xml.sax.SAXException; import org.xml.sax.helpers.AttributesImpl; import javax.xml.transform.OutputKeys; 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 java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.util.List; /** * Created by succlz123 on 16/6/22. */ public class SAXGenerator { public void generate(Values values) throws IOException { File dimenFile = values.dimenFile; FileOutputStream fos = new FileOutputStream(dimenFile); StreamResult result = new StreamResult(fos); SAXTransformerFactory sff = (SAXTransformerFactory) SAXTransformerFactory.newInstance(); TransformerHandler th = null; try { th = sff.newTransformerHandler(); Transformer transformer = th.getTransformer(); transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8"); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); th.setResult(result); th.startDocument(); AttributesImpl attr = new AttributesImpl(); char[] space = "\n".toCharArray(); th.characters(space, 0, space.length); th.startElement("", "", "resources", attr); List<Dimen> dimens = values.dimens; char[] spaceChar = "\n ".toCharArray(); for (Dimen dimen : dimens) { //white space th.characters(spaceChar, 0, spaceChar.length); //name attr attr.addAttribute("", "", "name", String.class.getName(), dimen.name); th.startElement("", "", "dimen", attr); char[] valueChars = String.format("%spx", dimen.value).toCharArray(); th.characters(valueChars, 0, valueChars.length); th.endElement("", "", "dimen"); } th.endElement("", "", "resources"); th.endDocument(); } catch (TransformerConfigurationException | SAXException e) { e.printStackTrace(); } finally { fos.close(); } } }