javaparser生成代码,JDT的JDT
javaparser生成代码,JDT的JDT详细介绍
本文目录一览: 利用JAVACC将HQL-SQL
首先下载JAVACC 编写 jj文件 定义要空开的分隔符 SKIP : { | \t | \n | \r | \f } 定义关键字 from 为HQL的关键字 Teacher是用户输入的类名 应当是一个任意由字母和数字组成的单词 我们可以用正则表达式:[ A Z a z ]来表示 TOKEN: /*RESERVED TOKENS FOR UQL */ {
|
} 接下来定义一下输入的顺序与规范 void expression() : { Token tTable; } { (
tTable =
) { sqlSB append( SELECT * ); sqlSB append( FROM ) append(tTable image); } } 最后就是写解析代码 以便生成java代码 PARSER_BEGIN(HQLParser) import java lang StringBuffer; import java io StringReader; import java io Reader; public class HQLParser { private static StringBuffer sqlSB; /** A String based constructor for ease of use **/ public HQLParser(String s) { this((Reader)(new StringReader(s))); sqlSB = new StringBuffer(); } public String getSQL() { return sqlSB toString(); } public static void main(String args[]) { try { String query = args[ ]; HQLParser parser = new HQLParser(query); parser parse(); System out println( SQL: +parser getSQL()); } catch(Exception e) { e printStackTrace(); } } public void parse() { try { expression(); } catch(Exception e) { e printStackTrace(); } } } PARSER_END(HQLParser) 接下来到dos下输入: javacc debug_parser test jj debug_parser:用来输出语法树 这时候会生成 个java文件 每个文件的作用以后会详细说明 这时候只需要 javac * java即可编译全部的java文件 然后执行java HQLParser from Teacher 这时候屏幕上就会显示出 select * from Teacher lishixinzhi/Article/program/Java/JSP/201311/19735
如何用java代码创建xml文件
用java自带的就可以,有问题可以问我
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
//构造
public XMLUtil(String name) throws ParserConfigurationException {
filename = name;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
document = builder.newDocument();
}
/**
* 保存到文件
*/
public void toSave() {
try {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
PrintWriter pw = new PrintWriter(new FileOutputStream(filename));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);
} catch (TransformerException mye) {
mye.printStackTrace();
} catch (IOException exp) {
exp.printStackTrace();。
使用jxl这个工具来创建吧,下载jxl.jar这个包,然后使用它来创建读取都行,相关用法网上查下吧
Dom4j,标准的使用java创建XML文件,方式简单,处理迅速
用java自带的就可以,有问题可以问我
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
//构造
public XMLUtil(String name) throws ParserConfigurationException {
filename = name;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
document = builder.newDocument();
}
/**
* 保存到文件
*/
public void toSave() {
try {
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
PrintWriter pw = new PrintWriter(new FileOutputStream(filename));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result);
} catch (TransformerException mye) {
mye.printStackTrace();
} catch (IOException exp) {
exp.printStackTrace();
}
}
JDT的JDT
(java development tooling)是Eclipse提供的一组API。其功能引用其官方文档上的说法:Programmatically manipulate Java resources, such as creating projects, generating Java source code, performing builds, or detecting problems in code. Programmatically launch a Java program from the platform. Provide a new type of VM launcher to support a new family of Java runtimes. Add new functions and extensions to the Java IDE itself. 总之,提供了一系列强大的API供我们操作Java代码。JDT实际上是将Java代码构建成一个基于DOM结构的抽象语法树AST(Abstract Syntax Tree )。代码中的每个部分都对应一个ASTNode,许多的ASTNode就构成了这个抽象的语法树。Java Class一般对应Compilation Unit node,该节点也是AST树上的顶点。创建一个AST如下:java 代码ASTParser parser = ASTParser.newParser(AST.JLS3); parser.setSource(.toCharArray()); CompilationUnit unit = (CompilationUnit) parser.createAST(null); unit.recordModifications(); AST ast = unit.getAST();其中createAST,当parse需要较长时间时,可以采用createAST(new NullProgressMonitor()),否则直接传null即可。recordModifications()用于记录节点的变动,比如修改、删除等,当需要对AST树进行变动操作时,必须要预先调用这个方法。比较重要的是:一个AST树上的所有节点必须都属于该AST。不允许直接将其他AST树上的节点添加该AST树上。否则会抛出java.lang.IllegalArgumentException异常。须使用ASTNode.copySubtree(AST target, ASTNode node)返回一个目标树的深度拷贝,才能进行添加操作。例如: java 代码ASTParser parser = ASTParser.newParser(AST.JLS3); parser.setSource(.toCharArray()); CompilationUnit targetRoot= (CompilationUnit) parser.createAST(null); targetRoot.recordModifications(); parser.setSource(class T{}”.toCharArray()); CompilationUnit srcRoot= (CompilationUnit) parser.createAST(null); //这是非法操作,两者的AST源不一样 targetRoot.types().add(srcRoot.types().get(0)); //这是合法操作 targetRoot.types().add(ASTNode.copySubtree( targetRoot.getAST(), (ASTNode) srcRoot.types().get(0))); //这是合法操作 targetRoot.types().add(targetRoot.getAST().newTypeDeclaration());
大神帮忙写个JAVA代码 高悬赏200
你描述下输出的结果是什么样的,给个示例
输出的格式是什么样的
要花很多钱的
import java.io.ByteArrayInputStream;import java.io.IOException;import java.util.HashMap;import java.util.Map;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class XMLParserUtil { public static Map
getMapFromXML(String xmlString) throws ParserConfigurationException, IOException, SAXException { //用Dom的方式解析 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); ByteArrayInputStream tInputStringStream = null; if (xmlString != null && !xmlString.trim().equals("")) { tInputStringStream = new ByteArrayInputStream(xmlString.getBytes("UTF-8")); }else{ return null; } Document document = builder.parse(tInputStringStream); //获取到document里面的全部结点 NodeList allNodes = document.getFirstChild().getChildNodes(); Node node; Map
map = new HashMap
(); int i=0; while (i < allNodes.getLength()) { node = allNodes.item(i); if(node instanceof Element){ System.out.println("标签名:"+node.getNodeName()+"标签内容:"+node.getTextContent()); map.put(node.getNodeName(),node.getTextContent()); } i++; } return map; }}利用dom解析xml格式,将结果放在map里,标签名是key,标签内容是value
求帮忙制作一个JAVA HTMLParser Extractor解析器类 从HTML中提取所需要的信息
试试jsoup,可以像jquery那样去获取你要的数据
正则表达式:
[\w\W]+?)》[\w\W]+?作 者[\w\W]+?name="__infodetail_pub" target="_blank" class="c_green">(?
[\w\W]+?) 主编
作者>