xml
1. 准备一个xml文件
xmlmenu
1<Menu>
2 <MenuItem Name="系统管理" AssemblyName="" FormTag="FALSE" AddToolbar="FALSE">
3 <MenuItem Name="权限管理" ShortCut="" Image="" AssemblyName="" FormTag="FALSE" AddToolButton="FALSE">
4 <MenuItem Name="系统权限管理" ShortCut="" Image="password.png" AssemblyName="HustCAD.IntePLM.WinUI.FrmSysRight,IntePLM.TyRightWinUI" FormTag="TRUE" AddToolButton="FALSE"/>
5 <MenuItem Name="权限规则定义" ShortCut="" Image="right.png" AssemblyName="HustCAD.IntePLM.WinUI.FrmRightRule,IntePLM.TyRightWinUI" FormTag="TRUE" AddToolButton="FALSE"/>
6 <MenuItem Name="权限日志" ShortCut="" Image="doc_yellow_edit.png" AssemblyName="HustCAD.IntePLM.WinUI.FrmRightLog,IntePLM.TyRightWinUI" FormTag="TRUE" AddToolButton="FALSE"/>
7 </MenuItem>
8</Menu>
2.准备一个xml schemal文件来验证xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2006 sp2 U (http://www.altova.com) by peter (hust) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="Menu">
<xs:complexType>
<xs:sequence>
<xs:element ref="MenuItem" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="MenuItem">
<xs:complexType>
<xs:sequence>
<xs:element ref="MenuItem" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="AddToolButton">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="TRUE"/>
<xs:enumeration value="FALSE"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="AddToolbar">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="TRUE"/>
<xs:enumeration value="FALSE"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="AssemblyName" type="xs:string" use="required"/>
<xs:attribute name="FormTag" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="TRUE"/>
<xs:enumeration value="FALSE"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Image" type="xs:string"/>
<xs:attribute name="Name" type="xs:string" use="required"/>
<xs:attribute name="ShortCut" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="F1"/>
<xs:enumeration value="F2"/>
<xs:enumeration value="F3"/>
<xs:enumeration value="F4"/>
<xs:enumeration value="F5"/>
<xs:enumeration value="F6"/>
<xs:enumeration value="F7"/>
<xs:enumeration value="F8"/>
<xs:enumeration value="F9"/>
<xs:enumeration value="F10"/>
<xs:enumeration value="F11"/>
<xs:enumeration value="F12"/>
<xs:enumeration value="Alt0"/>
<xs:enumeration value="Alt1"/>
<xs:enumeration value="Alt2"/>
<xs:enumeration value="Alt3"/>
<xs:enumeration value="Alt4"/>
<xs:enumeration value="Alt5"/>
<xs:enumeration value="Alt6"/>
<xs:enumeration value="Alt7"/>
<xs:enumeration value="Alt8"/>
<xs:enumeration value="Alt9"/>
<xs:enumeration value="AltBksp"/>
<xs:enumeration value="AltF1"/>
<xs:enumeration value="AltF2"/>
<xs:enumeration value="AltF3"/>
<xs:enumeration value="AltF4"/>
<xs:enumeration value="AltF5"/>
<xs:enumeration value="AltF6"/>
<xs:enumeration value="AltF7"/>
<xs:enumeration value="AltF8"/>
<xs:enumeration value="AltF9"/>
<xs:enumeration value="AltF10"/>
<xs:enumeration value="AltF11"/>
<xs:enumeration value="AltF12"/>
<xs:enumeration value="AltDownArrow"/>
<xs:enumeration value="AltUpArrow"/>
<xs:enumeration value="AltLeftArrow"/>
<xs:enumeration value="AltRightArrow"/>
<xs:enumeration value="Ctrl0"/>
<xs:enumeration value="Ctrl1"/>
<xs:enumeration value="Ctrl2"/>
<xs:enumeration value="Ctrl3"/>
<xs:enumeration value="Ctrl4"/>
<xs:enumeration value="Ctrl5"/>
<xs:enumeration value="Ctrl6"/>
<xs:enumeration value="Ctrl7"/>
<xs:enumeration value="Ctrl8"/>
<xs:enumeration value="Ctrl9"/>
<xs:enumeration value="CtrlA"/>
<xs:enumeration value="CtrlB"/>
<xs:enumeration value="CtrlC"/>
<xs:enumeration value="CtrlD"/>
<xs:enumeration value="CtrlE"/>
<xs:enumeration value="CtrlF"/>
<xs:enumeration value="CtrlG"/>
<xs:enumeration value="CtrlH"/>
<xs:enumeration value="CtrlI"/>
<xs:enumeration value="CtrlJ"/>
<xs:enumeration value="CtrlK"/>
<xs:enumeration value="CtrlL"/>
<xs:enumeration value="CtrlM"/>
<xs:enumeration value="CtrlN"/>
<xs:enumeration value="CtrlO"/>
<xs:enumeration value="CtrlP"/>
<xs:enumeration value="CtrlQ"/>
<xs:enumeration value="CtrlR"/>
<xs:enumeration value="CtrlS"/>
<xs:enumeration value="CtrlT"/>
<xs:enumeration value="CtrlU"/>
<xs:enumeration value="CtrlV"/>
<xs:enumeration value="CtrlX"/>
<xs:enumeration value="CtrlY"/>
<xs:enumeration value="CtrlZ"/>
<xs:enumeration value="CtrlF1"/>
<xs:enumeration value="CtrlF2"/>
<xs:enumeration value="CtrlF3"/>
<xs:enumeration value="CtrlF4"/>
<xs:enumeration value="CtrlF5"/>
<xs:enumeration value="CtrlF6"/>
<xs:enumeration value="CtrlF7"/>
<xs:enumeration value="CtrlF8"/>
<xs:enumeration value="CtrlF9"/>
<xs:enumeration value="CtrlF10"/>
<xs:enumeration value="CtrlF11"/>
<xs:enumeration value="CtrlF12"/>
<xs:enumeration value="CtrlIns"/>
<xs:enumeration value="CtrlShift0"/>
<xs:enumeration value="CtrlShift1"/>
<xs:enumeration value="CtrlShift2"/>
<xs:enumeration value="CtrlShift3"/>
<xs:enumeration value="CtrlShift4"/>
<xs:enumeration value="CtrlShift5"/>
<xs:enumeration value="CtrlShift6"/>
<xs:enumeration value="CtrlShift7"/>
<xs:enumeration value="CtrlShift8"/>
<xs:enumeration value="CtrlShift9"/>
<xs:enumeration value="CtrlShiftA"/>
<xs:enumeration value="CtrlShiftB"/>
<xs:enumeration value="CtrlShiftC"/>
<xs:enumeration value="CtrlShiftD"/>
<xs:enumeration value="CtrlShiftE"/>
<xs:enumeration value="CtrlShiftF"/>
<xs:enumeration value="CtrlShiftG"/>
<xs:enumeration value="CtrlShiftH"/>
<xs:enumeration value="CtrlShiftI"/>
<xs:enumeration value="CtrlShiftJ"/>
<xs:enumeration value="CtrlShiftK"/>
<xs:enumeration value="CtrlShiftL"/>
<xs:enumeration value="CtrlShiftM"/>
<xs:enumeration value="CtrlShiftN"/>
<xs:enumeration value="CtrlShiftO"/>
<xs:enumeration value="CtrlShiftP"/>
<xs:enumeration value="CtrlShiftQ"/>
<xs:enumeration value="CtrlShiftR"/>
<xs:enumeration value="CtrlShiftS"/>
<xs:enumeration value="CtrlShiftT"/>
<xs:enumeration value="CtrlShiftU"/>
<xs:enumeration value="CtrlShiftV"/>
<xs:enumeration value="CtrlShiftW"/>
<xs:enumeration value="CtrlShiftX"/>
<xs:enumeration value="CtrlShiftY"/>
<xs:enumeration value="CtrlShiftZ"/>
<xs:enumeration value="ShiftIns"/>
<xs:enumeration value="ShiftF1"/>
<xs:enumeration value="ShiftF2"/>
<xs:enumeration value="ShiftF3"/>
<xs:enumeration value="ShiftF4"/>
<xs:enumeration value="ShiftF5"/>
<xs:enumeration value="ShiftF6"/>
<xs:enumeration value="ShiftF7"/>
<xs:enumeration value="ShiftF8"/>
<xs:enumeration value="ShiftF9"/>
<xs:enumeration value="ShiftF10"/>
<xs:enumeration value="ShiftF11"/>
<xs:enumeration value="ShiftF12"/>
<xs:enumeration value=""/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
3。定义一个类来加载菜单
public class MenuLoad
{
private PluginCollection m_plugins = null;
public MenuBar _menbar = new MenuBar();
public ToolStrip _toolbar = new ToolStrip();
private OutlookBar bar = new OutlookBar();
private ImageList imglist = new ImageList();
private StringBuilder builder = new StringBuilder();
public MenuLoad()
{
bar = _menbar.outlookBar;
}
private TabControl tabCtrl;
public TabControl TabCtrl
{
set
{
tabCtrl = value;
}
}
private void ValidationEventHandler(object sender, ValidationEventArgs e)
{
builder.AppendLine("验证XML文档的时候发生错误:");
builder.AppendLine("严重级别:" + e.Severity);
builder.AppendLine("错误信息:" + e.Message);
builder.AppendLine("------+--------+-------+------+--------+-------+------+--------+-------+");
builder.AppendLine();
}
/**//// <summary>
/// 验证XML文件是否是合乎规范的文件
/// </summary>
/// <param name="xmlfile">文件名称</param>
/// <returns>是则返回true,否则返回false</returns>
private bool ValidateXml(string xmlfile)
{
bool validXml = false;
string spath = "";
spath = Application.StartupPath + "\\configurations\\XMLSMenu.xsd";
if(!System.IO.File.Exists(spath))
{
throw new System.IO.FileNotFoundException(String.Format(Resources.StringFileNotFound, spath));
}
XmlReaderSettings settings = new XmlReaderSettings();
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.Add(null, spath);
settings.Schemas.Add(schemaSet);
settings.ValidationType = ValidationType.Schema;
settings.ValidationEventHandler += new ValidationEventHandler(ValidationEventHandler);
settings.ValidationFlags = settings.ValidationFlags | XmlSchemaValidationFlags.ReportValidationWarnings;
XmlReader reader = XmlReader.Create(xmlfile, settings);
while(reader.Read())
{
}
if(builder.Length > 0)
{
validXml = false;
}
else
{
validXml = true;
}
reader.Close();
return validXml;
[1] [2] 下一页