应该如何定义和解析XML?我初步想了一下,用如下的方式来定义菜单,其中name为显示的名字,class为菜单的事件监听程序的类名,description为注释。
<?xml version="1.0" encoding="UTF-8"?>
<menubar>
<menu name="文件" class="" discription="" icon="">
<submenu name="新建" class="" discription=""></submenu>
<submenu name="关闭" class="" discription=""></submenu>
<separator></separator>
<submenu name="保存" class="" discription=""></submenu>
<submenu name="另存为" class="" discription=""></submenu>
<separator></separator>
<submenu name="退出" class="" discription=""></submenu>
</menu>
</menubar>
我现在有几个问题:
1:这样做可不可行?
2:定义的XML格式是否合理?
3:如何定义相关的DTD?
4:如何解析这个XML?
5:谁能够给一个DEMO(呵呵,想偷懒)
欢迎大家讨论~~~
<?xml version="1.0" encoding="UTF-8"?>
<menubar>
<menu name="文件" class="" discription="" icon="">
<submenu name="新建" class="" discription=""></submenu>
<submenu name="关闭" class="" discription=""></submenu>
<separator></separator>
<submenu name="保存" class="" discription=""></submenu>
<submenu name="另存为" class="" discription=""></submenu>
<separator></separator>
<submenu name="退出" class="" discription=""></submenu>
</menu>
</menubar>
我现在有几个问题:
1:这样做可不可行?
2:定义的XML格式是否合理?
3:如何定义相关的DTD?
4:如何解析这个XML?
5:谁能够给一个DEMO(呵呵,想偷懒)
欢迎大家讨论~~~
2、可以再添加一些其他的属性进去
3、自己去看xml的书,好象.xsd比较好
4、dom4j,jdom
5、自己写比较好
但我不知道你这个代码是用于SWING还是SWT,据我所知,关于菜单部分的JAVA GUI的标准做法都不是由程序员自定义XML的。
你看看xul或许对你有帮助,我看到过支持xul的swing程序,当然xul对web也支持
<?xml version="1.0" encoding="UTF-8"?>
<menubar>
<menu name="文件">
<submenu name="新建" action="cn.edu.wust.myworkflow.workflow.gui.action.CreateNewFileListener" discription="新建文件" icon="images/newfile.ico"></submenu>
<submenu name="打开" action="cn.edu.wust.myworkflow.workflow.gui.action.CreateNewFileListener" discription="" icon=""></submenu>
<submenu name="关闭" action="cn.edu.wust.myworkflow.workflow.gui.action.CreateNewFileListener" discription="" icon=""></submenu>
<separator></separator>
<submenu name="保存" action="cn.edu.wust.myworkflow.workflow.gui.action.CreateNewFileListener" discription="" icon=""></submenu>
<submenu name="另存为" action="cn.edu.wust.myworkflow.workflow.gui.action.CreateNewFileListener" discription="" icon=""></submenu>
<separator></separator>
<submenu name="退出" action="cn.edu.wust.myworkflow.workflow.gui.action.CreateNewFileListener" discription="" icon=""></submenu>
</menu>
<menu name="编辑">
<submenu name="撤销" action="cn.edu.wust.myworkflow.workflow.gui.action.CreateNewFileListener" discription="" icon=""></submenu>
<submenu name="重做" action="cn.edu.wust.myworkflow.workflow.gui.action.CreateNewFileListener" discription="" icon=""></submenu>
<separator></separator>
<submenu name="剪切" action="cn.edu.wust.myworkflow.workflow.gui.action.CreateNewFileListener" discription="" icon=""></submenu>
<submenu name="复制" action="cn.edu.wust.myworkflow.workflow.gui.action.CreateNewFileListener" discription="" icon=""></submenu>
<submenu name="粘贴" action="cn.edu.wust.myworkflow.workflow.gui.action.CreateNewFileListener" discription="" icon=""></submenu>
<submenu name="删除" action="cn.edu.wust.myworkflow.workflow.gui.action.CreateNewFileListener" discription="" icon=""></submenu>
</menu>
</menubar>
private JMenuBar createMenuBar()
{
JMenuBar menuBar = new JMenuBar();
try {
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("configs\\MenuBar.xml");
Element root = doc.getDocumentElement();
NodeList items = root.getElementsByTagName("menu");
for(int i = 0; i < items.getLength(); i ++)
{
Node item = (Node)items.item(i);
JMenu menu = new JMenu(item.getAttributes().getNamedItem("name").getTextContent());
NodeList submenus = item.getChildNodes();
for(int j = 0; j < submenus.getLength(); j ++)
{
Node submenu = (Node)submenus.item(j);
if(submenu instanceof Element){
if(submenu.getNodeName().trim().toUpperCase().equals("SEPARATOR"))
{
menu.addSeparator();
}
else
{
JMenuItem menuItem = new JMenuItem(submenu.getAttributes().getNamedItem("name").getTextContent());
menuItem.addActionListener((ActionListener)Class.forName(submenu.getAttributes().getNamedItem("action").getTextContent()).newInstance());
menu.add(menuItem);
}
}
}
menuBar.add(menu);
}
}catch (Exception e)
{
JOptionPane.showMessageDialog(this, e);
}
return menuBar;
}
lz的代码比较乱.
View Menus,Toolbars and ActionsIdentifier: org.eclipse.ui.viewActions
Description: This extension point is used to add actions to the pulldown menu and toolbar for views registered by other plug-ins. Each view has a local pulldown menu normally activated by clicking on the top right triangle button. Other plug-ins can contribute submenus and actions to this menu. Plug-ins may also contribute actions to a view toolbar. View owners are first given a chance to populate these areas. Optional additions by other plug-ins are appended.An action's enablement and/or visibility can be defined using the elements enablement and visibility respectively. These two elements contain a boolean expression that is evaluated to determine the enablement and/or visibility. The syntax is the same for the enablement and visibility elements. Both contain only one boolean expression sub-element. In the simplest case, this will be an objectClass, objectState, pluginState, or systemProperty element. In the more complex case, the and, or, and not elements can be combined to form a boolean expression. Both the and, and or elements must contain 2 sub-elements. The not element must contain only 1 sub-element.