Avatar billede jhansen31 Nybegynder
18. januar 2007 - 10:54 Der er 8 kommentarer og
1 løsning

Xml-fil til opbygning af menu

Jeg har xml-fil indeholdende:

<?xml version="1.0" encoding="utf-8" ?>
<Config xmlns="http://tempuri.org/ConfigurationData.xsd">
  <desktopmodules>
    <moduleId>01</moduleId>
    <displayName>Modul 1</displayName>
    <physicalPath>HKEY_LOCAL_MACHINE\SOFTWARE\...</physicalPath>
    <moduleName>...</moduleName>
    <modulePrivateParam>[ModuleInstallDir</modulePrivateParam> />
    <survey>false</survey>
    <helpfilepath>...</helpfilepath>
    <physicalName>...</physicalName>
    <product>...</product>
    <getLatestVersion>true</getLatestVersion>
  </desktopmodules>

  <desktopmodules>
    <moduleId>02</moduleId>
    <displayName>Modul 2</displayName>
    <physicalPath>HKEY_LOCAL_MACHINE\SOFTWARE\...</physicalPath>
    <moduleName>...</moduleName>
    <modulePrivateParam>[ModuleInstallDir</modulePrivateParam> />
    <survey>false</survey>
    <helpfilepath>...</helpfilepath>
    <physicalName>...</physicalName>
    <product>...</product>
    <getLatestVersion>true</getLatestVersion>
  </desktopmodules>

osv...

Jeg har en web-service der læser denne fil, laver desktopmoduler og retunrer så et array af desktopmoduler. Dette array af moduler, bliver så brugt på klient siden til at bygge en ToolStripMenu, hvor hvert deskttopmodul, har et tilsvarende menuItem. Dette virker fint.
mit problem opstår når jeg nu skal til at lave under-/submenuer. Hvordan skal jeg opbygge xml-filen, hvad skal web-servicen retuner i stedet for arrayet og hvordan opbygger jeg menuen?

Jeg arbejder med VS2005
Avatar billede dr_chaos Nybegynder
18. januar 2007 - 10:58 #1
måske skal du lave et submodul element:
<desktopmodules>
    <moduleId>02</moduleId>
    <displayName>Modul 2</displayName>
    <physicalPath>HKEY_LOCAL_MACHINE\SOFTWARE\...</physicalPath>
    <moduleName>...</moduleName>
    <modulePrivateParam>[ModuleInstallDir</modulePrivateParam> />
    <survey>false</survey>
    <helpfilepath>...</helpfilepath>
    <physicalName>...</physicalName>
    <product>...</product>
    <getLatestVersion>true</getLatestVersion>
<submodul>
<moduleId>03</moduleId>
    <displayName>Modul 2</displayName>
    <physicalPath>HKEY_LOCAL_MACHINE\SOFTWARE\...</physicalPath>
    <moduleName>...</moduleName>
    <modulePrivateParam>[ModuleInstallDir</modulePrivateParam> />
    <survey>false</survey>
    <helpfilepath>...</helpfilepath>
    <physicalName>...</physicalName>
    <product>...</product>
    <getLatestVersion>true</getLatestVersion>
</submodul>
  </desktopmodules>
også hente noder udfra submodule elementet.

Du skal så hente data direkte udfra xml i stedet for fra en arraylist.
Avatar billede kalp Novice
18. januar 2007 - 11:00 #2
ligesom du har lavet en overordnet node
<desktopmodules>
med en masse under  nodes kan du jo lave under noder til alle de andre..

på samme måde..

og ja så skal du bare læse din xml ind ind istedet og benytte dig af Xpath til at udtrække din data fra den.
Avatar billede jhansen31 Nybegynder
18. januar 2007 - 11:01 #3
Xml'en bør jo nok ligne dette...

xml version="1.0" encoding="utf-8" ?>
<Config xmlns="http://tempuri.org/ConfigurationData.xsd">
  <desktopmodules>
    <desktopmodule>
      <moduleId>01</moduleId>
      <displayName>Modul 1</displayName>
      <physicalPath>HKEY_LOCAL_MACHINE\SOFTWARE\...</physicalPath>
      <moduleName></moduleName>
      <modulePrivateParam>[ModuleInstallDir</modulePrivateParam> />
      <survey>false</survey>
      <helpfilepath></helpfilepath>
      <physicalName></physicalName>
      <product></product>
      <getLatestVersion>true</getLatestVersion>
    </desktopmodule>
    <desktopmodule>
      <moduleId>02</moduleId>
      <displayName>Modul 2</displayName>
      <physicalPath>HKEY_LOCAL_MACHINE\SOFTWARE\...</physicalPath>
      <moduleName></moduleName>
      <modulePrivateParam>[ModuleInstallDir</modulePrivateParam> />
      <survey>false</survey>
      <helpfilepath></helpfilepath>
      <physicalName></physicalName>
      <product></product>
      <getLatestVersion>true</getLatestVersion>
    </desktopmodule>
  </desktopmodules>
  <desktopmodules>
    <desktopmodule>
      <moduleId>03</moduleId>
      <displayName>Modul 3</displayName>
      <physicalPath>HKEY_LOCAL_MACHINE\SOFTWARE\...</physicalPath>
      <moduleName></moduleName>
      <modulePrivateParam>[ModuleInstallDir</modulePrivateParam> />
      <survey>false</survey>
      <helpfilepath></helpfilepath>
      <physicalName></physicalName>
      <product></product>
      <getLatestVersion>true</getLatestVersion>
    </desktopmodule>
  </desktopmodules>

osv...
Avatar billede jhansen31 Nybegynder
18. januar 2007 - 11:03 #4
Ok, prøver at kigge på det...
Avatar billede jhansen31 Nybegynder
18. januar 2007 - 11:20 #5
Nu er jeg ikke bekendt med xpath, hvordan bruges den til at løbe en xml-fil igennem og cheche for nodes og undernodes???
Avatar billede dr_chaos Nybegynder
18. januar 2007 - 11:44 #6
Noget i denne stil:
xmlDocument xd = ditxmldocument;
foreach (XmlElement xedesktopmodules in xd.SelectNodes("//desktopmodules"))
                {
string id = xedesktopmodules.SelectSingleNode("moduleId").InnerText;

}
Avatar billede kalp Novice
18. januar 2007 - 12:07 #7
XmlDocument ditDoc = new XmlDocument();
ditDoc.Load("DinXml.xml");
XmlNodeList list = ditDoc.SelectNodes("//desktopmodules");
foreach(XmlNode data in list)
{
// nu er vi på et af desktopmodules elementerne..
// så kan du f.eks hive fat i product node'en sådan her
//data.SelectSingleNode("./product");
//men du kan også loope endnu engang f.eks hvis det er en submenu..
XmlNodeList products = data.SelectNodes("./navnetPåunderNoderne");
foreach(XmlNode prod in products)
{
}

}

osv osv..
Avatar billede jhansen31 Nybegynder
20. marts 2007 - 14:16 #8
Jeg undskylder at der er gået så lang tid, med har ligget med en rygskade....
chaos, hvis du sender et svar skal du få point, da det var du der kom med svaret først...
Avatar billede dr_chaos Nybegynder
20. marts 2007 - 15:59 #9
svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester