codexmlwriter.java
来自「一个java 代码生成器」· Java 代码 · 共 101 行
JAVA
101 行
package com.jenerator.regen;
/*<Imports>*/
import com.jenerator.util.XMLConnect;
import org.apache.log4j.Logger;
import org.apache.xml.serialize.BaseMarkupSerializer;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.TextSerializer;
import org.apache.xml.serialize.XMLSerializer;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import java.io.*;
/*</Imports>*/
/** * CodeXmlWriter
*
* * * @author Siddhartha P. Chandurkar
* @version 0.9.0 */
public class CodeXmlWriter implements CodeWriter {
private Document doc;
private String formatter;
private Logger log = Logger.getLogger(com.jenerator.regen.CodeXmlWriter.class.getName());
public CodeXmlWriter(File file) throws ReplacerException {
try {
doc = new XMLConnect(convertJavaSourceIntoXml(file)).readXmlString();
} catch (SAXException e) {
throw new ReplacerException(e);
} catch (IOException e) {
throw new ReplacerException(e);
} catch (ReplacerException e) {
throw e;
}
formatter = "TEXT";
}
private String convertJavaSourceIntoXml(File file) throws ReplacerException {
StringBuffer buff = new StringBuffer();
try {
BufferedReader d = new BufferedReader(new FileReader(file));
String str = "<?xml version='1.0' ?>\n<Source>\n";
buff.append(str);
while (str != null) {
str = d.readLine();
if (str != null)
buff.append(str + "\n");
}
buff.append("\n</Source>\n");
} catch (IOException e) {
log.fatal(e);
throw new ReplacerException(e);
}
return buff.toString();
}
public void write(File file) throws IOException {
OutputFormat outputFormat = new OutputFormat(doc, "UTF-8", false);
BaseMarkupSerializer serializer;
if (formatter.equals("TEXT")) {
serializer = new TextSerializer();
serializer.setOutputByteStream(new FileOutputStream(file));
} else {
// loses formatting if XMLSerializer is used. serializer = new XMLSerializer(new FileOutputStream(file), outputFormat);
}
log.info("Regenerated File : " + file);
serializer.serialize(doc);
}
public void putClassCode(String classCode) throws ReplacerException {
try {
NodeList element = doc.getElementsByTagName("manual-code");
element.item(0).getChildNodes().item(0).setNodeValue("<manual-code>" + classCode + "</manual-code>");
} catch (Exception e) {
log.fatal("The <manual-code> element delimiters might be missing in the source code", e);
throw new ReplacerException(e);
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?