我使用Eclipse JDT库解析Java源代码来访问类定义的所有方法。当代码在方法主体中包含类似“//xxxx”的注释时,解析器将在注释之前停止,并且忽略方法main(String[]args)。
这是用于解析的示例案例:
public class HelloWorld {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
//Set the age
this.age = age;
System.out.println();
}
public static void main(String[] args) {
HelloWorld hw = new HelloWorld();
if(true) {
hw.setAge(10);
}
}
}
这是我为解析上述示例案例而编写的代码:
public class Parser {
/**
* Parse java program in given file path
* @param filePath
*/
public void parseFile(String filePath) {
System.out.println("Starting to parse " + filePath);
char[] source = readCharFromFile(filePath);
ASTParser parser = ASTParser.newParser(AST.JLS3);
parser.setKind(ASTParser.K_COMPILATION_UNIT);
parser.setSource(source);
parser.setResolveBindings(true);
CompilationUnit cu = (CompilationUnit) parser.createAST(null);
cu.accept(new ASTVisitor() {
@Override
public boolean visit(MethodDeclaration node) {
return true;
}
@Override
public void endVisit(MethodDeclaration node) {
System.out.println("Method " + node.getName().getFullyQualifiedName() + " is visited");
}
});
}
}
当我使用它解析代码时,它只能得到的结果是getName()
、setName()
、getAge()
和getAge()
方法已经被访问,而main()
被忽略。
期待你的回答。多谢了。
您用来读取源代码的代码似乎有问题。
请尝试下面的代码读取文件:
File javaFile = new File(filePath);
BufferedReader in = new BufferedReader(new FileReader(javaFile));
final StringBuffer buffer = new StringBuffer();
String line = null;
while (null != (line = in.readLine())) {
buffer.append(line).append("\n");
}
并使用此设置解析器源:
parser.setSource(buffer.toString().toCharArray());
其他的一切似乎都是好的代码。
问题内容: 我想解析以下网址:http : //eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi? db= nucleotide& id= 224589801 结果,我想出了以下方法: 通过这种方法,我可以获取Item节点的值,但不能获取其任何属性。我尝试使用NamedNodeMap与getAttribute()进行实验,但仍然无济于事。 为什
问题内容: 我有一个C-Header文件,定义了几个构造,包含多个char数组。 我想使用Java解析这些文件。是否存在用于将C-Header文件读入结构的库,或者是否存在可以理解C-Header文件的流解析器? 只是为了获得更多背景信息(我只是在寻找C-Header解析器,而不是针对此特定问题的解决方案):我有一个包含数据的文本文件和一个解释结构的C- Header文件。两者都有点动态,所以我不
如何使用Java Mail MimeMessage解析mime正文部分,我将单独从IMAP服务器获取正文部分。 命令我过去常常独自去取身体的一部分。 这将获取不带头和附件的原始MIME消息(但包含内联图像)。 当我解析提取的内容使用JavaMime消息,我得到错误的结果。 例如:如果原始MIME包含内联图像返回包含内联图像数据的内容 原始MIME: 结果: 任何人都可以建议如何使用MimeMess
我在使用jsoup(Java)解析html文档时遇到了一个问题。我正在分析的HTML具有以下格式: 我想在两个“hr”标记之间隔离HTML文本。我正在尝试以下代码: 系统出来println(对象); 但是ArrayList没有包含我想要的内容,我不知道如何解决它。(我是否可以将“hr”标记转换为“hr”文本“/hr”标记)?
我有这个文件要处理,我正试图找出如何将第二行作为不同的对象来读取。在这一行的末尾,最后一项是公交车的数量。第二行、第四行等应包含idBus和noOfBus,并用逗号分隔。 基于这些课程 我想要一个函数来处理CSV文件中所有公交车和大学线路的列表。它必须使用流API。我不知道这是否可能或如何进行。 当然,可以根据类进行更改,但保留变量,不添加任何额外内容。 我认为最方便的方法是浏览文件,根据两个班级
问题内容: 我想在Java中解析JSON文件,并从下面提到的文件中获取以下值: 从每个元素,我想获得距离和持续时间的值字段。我该怎么做呢? 问题答案: 使用json.org参考实现(org.json主页,在此处下载)。代码有点混乱,但是我认为它可以满足您的要求。通过不创建所有这些对象而是直接访问它们,可以采用很多快捷方式。我这样做的原因是试图使其更容易跟踪发生的事情。