我正在使用生成的头文件,该文件在州名和值之间具有以下映射:
SAXBuilder soRead = new SAXBuilder();
Document ReadSO;
try {
ReadSO = soRead.build(new File(selectedServiceOfferFile.getPath()));
JTree loadedTree = new JTree();
loadedTree.setModel(new DefaultTreeModel(
new DefaultMutableTreeNode("Service Offer") {
private static final long serialVersionUID = 1L;
{
add(new DefaultMutableTreeNode("Service Offer Properties"));
List<Element> soPlans = ReadSO.getRootElement().getChild("plans").getChildren();
for(int i=0;i<soPlans.size();i++){
Element soPlan = soPlans.get(i);
DefaultMutableTreeNode node_soPlan = new DefaultMutableTreeNode("Plan: "+soPlan.getAttributeValue("name"));
add(node_soPlan);
**List<Element> plansProps = soPlans.get(i).getChildren();**
for (int ii=0;ii<=plansProps.size()-1;ii++){
Element plansProp = plansProps.get(ii);
**if (plansProp.getQualifiedName()** == "props"){
node_soPlan.add(new DefaultMutableTreeNode("Plan Properties"));
}
else if (plansProp.getQualifiedName() == "section"){
//System.out.println(plansProp.getAttributeValue("id"));
node_soPlan.add(new DefaultMutableTreeNode("Section: "+plansProp.getAttributeValue("id")));
}
else if (plansProp.getQualifiedName() == "queues"){
node_soPlan.add(new DefaultMutableTreeNode("Queue Licences: "));
}
else if (plansProp.getQualifiedName() == "users"){
node_soPlan.add(new DefaultMutableTreeNode("Users: "));
}
else {
node_soPlan.add(new DefaultMutableTreeNode(plansProp));
}
System.out.println(plansProp.getAttributeValue("id"));
}
}
}
}
使用给定的API,我可以获得当前状态的值。在大多数情况下这很好,但是我希望将状态名称打印到调试控制台以便于调试。
当我知道它的值时,有没有办法滥用预处理器来获取宏的名称?
目前我在名称和值之间有一个查找表,但这不是一个很好的解决方案,因为头文件中的宏在重新生成时会发生变化。
我已经尝试了here的一些建议,但没有取得多大成功。