使用java我想创建一个函数,其输入是一个查询(如XPath),输出是类中的指定参数(下面给出的例子),是否有一个框架可以用来获得类似的结果。
实施例: - 需要编写函数的代码 String getParams(String,List< Topic>)
package temp;
import java.util.ArrayList;
import java.util.List;
public class Temp {
public static void main(String[] args) {
List<Topic> topics = new ArrayList<Topic>();
topics.add(new Topic("XYZ", "XYZ-param1", "XYZ-param2", 123, null));
topics.add(new Topic("ABC", "ABC-param1", "ABC-param2", 234, null));
List<Subscription> subs = new ArrayList();
subs.add(new Subscription("subs1", "subs1-param1", 701, null));
topics.add(new Topic("123", "123-param1", "123-param2", 234, subs));
String input1 = "/topics/{name = XYZ}/";
String input2 = "/topics/{name = ABC}/param1/";
String input3 = "/topics/{name = 123}/subs/{name = subs1}/param2";
// If a topic with name XYZ is present in the list (topics), should return a string (json format) containing members of class Topic
getParams(input1, topics); // output - "{"name":"XYZ", "param1":"XYZ-param1", "param2":"XYZ-param2","param3":"123", []}"
// If a topic with name ABC is present in the list (topics), should return a param1.toString of that class Topic
getParams(input2, topics); // output - "ABC-param1"
// If a topic with name 123 is present in the list (topics) and a subscription with name subs1 is present in the topics subscription list, should return a param2.toString of that class Subscription
getParams(input3, topics); // output - "701"
}
public class Consumer {
public Consumer() {
super();
// TODO Auto-generated constructor stub
}
public String name;
public double param1;
}
public class Subscription {
public Subscription(String name, String param1, int param2, List<Consumer> consumers) {
super();
this.name = name;
this.param1 = param1;
this.param2 = param2;
this.consumers = consumers;
}
public String name;
public String param1;
public int param2;
public List<Consumer> consumers;
}
public class Topic {
public Topic(String name, String param1, String param2, long param3, List<Subscription> subs) {
super();
this.name = name;
this.param1 = param1;
this.param2 = param2;
this.param3 = param3;
this.subs = subs;
}
public String name;
public String param1;
public String param2;
public long param3;
public List<Subscription> subs;
}
}