><?xml version="1.0" encoding="utf-8" ?> ><PlugInEvents> > <PlugInEvent> > <Name>Application.Startup</Name> > <Description>Occurred when application startup</Description> > <MustImplementTypes> > <MustImplementType> > <Type>IApplication</Type> > <EventHandler>Startup</EventHandler> > <Assembly>c:\\aaa.dll</Assembly> > </MustImplementType> > </MustImplementTypes> > </PlugInEvent> > <PlugInEvent> > <Name>Application.Shutdown</Name> > <Description>Occurred when application shutdown</Description> > <MustImplementTypes> > <MustImplementType> > <Type>IApplication</Type> > <EventHandler>Shutdown</EventHandler> > <Assembly>c:\\aaa.dll</Assembly> > </MustImplementType> > <MustImplementType> > <Type>IGlobal</Type> > <EventHandler>GlobalShutdown</EventHandler> > <Assembly>c:\\Global.dll</Assembly> > </MustImplementType> > </MustImplementTypes> > </PlugInEvent> ></PlugInEvents>>And I want to show them like this:-
Table: PlugInEvent
Columns: Name, Description, PlugInEvent_Id
Table: MustImplementTypes
Columns: PlugInEvent_Id, MustImplementTypes_Id
Table: MustImplementType
Columns: Type, EventHandler, Assembly, MustImplementTypes_Id
As you see, there are _Id fields which added to each table to keep record relationship between tables.... DataSet myXML = new DataSet(); myXML.ReadXml("xmlNav.xml"); StringBuilder myXMLstr = new StringBuilder(); for (int i = 0; i < myXML.Tables[0].Rows.Count; i ++ ) { myXMLstr.Remove(0, myXMLstr.Length - 1); DataRow[] myDRowsPIE = myXML.Tables[0].Rows[i].GetChildRows("PlugInEvent_MustImplementTypes"); myXMLstr.Append( "Name: " + myXML.Tables["PlugInEvent"].Rows[i]["Name"] + "\r\n" + "Description: " + myXML.Tables["PlugInEvent"].Rows[i]["Description"] + "\r\n" + "Must Implement:" + "\r\n" ); DataRow[] myDRowsMIT = myDRowsPIE[0].GetChildRows("MustImplementTypes_MustImplementType"); for (int j = 0; j < myDRowsMIT.Length; j++) myXMLstr.Append( "\tType: " + myDRowsMIT[j]["Type"].ToString() + "\r\n" + "\tEventHandler: " + myDRowsMIT[j]["EventHandler"].ToString() + "\r\n" + "\tAssembly: " + myDRowsMIT[j]["Assembly"].ToString() + "\r\n" ); MessageBox.Show(myXMLstr.ToString()); } ...Hope it helps