Avatar billede baddaydaddy Nybegynder
02. juli 2009 - 13:05 Der er 3 kommentarer og
1 løsning

Indsætte XmlNode der ikke er et ChildElement

Jeg har et XML dokument der bruges som basis for en menubar. Jeg ønsker nu at dynamisk tilføje nye xml elementer til det eksisterende dokument. Problemet er bare at de nye elementer ikke har nogen naturlig forbindelse til hinanden. Den del af det originale XML dokument der skal rettes i ser således ud:

<Entities>
  <Entity name="account">
  ...
    <ToolBar ValidForCreate="0" ValidForUpdate="1">
      <Button Icon="/_imgs/ico_16_1.gif" Url="/ISV/blabla.aspx">
        <Titles>
          <Title LCID="1033" Text="Bla bla" />
        </Titles>
        <ToolTips>
          <ToolTip LCID="1033" Text="Bla bla bla" />
        </ToolTips>
      </Button>
      <ToolBarSpacer />
    </ToolBar>
  </Entity>
</Entities>

De nye elementer skal så tilføjes under <ToolBar> og består så af <Button> (med undernoder) men OGSÅ det efterfølgende <ToolBarSpacer />.

Den kode jeg bruger nu ser således ud:

XmlDocument originalDoc = new XmlDocument();
originalDoc.Load("original.xml");
XmlDocument mergeDoc = new XmlDocument();
mergeDoc.Load("merge.xml");

XmlNode positionNode = originalDoc.SelectSingleNode("//Entities/Entity[@name='account']");
XmlNode newNode = mergeDoc.SelectSingleNode("/ToolBar/Button");
XmlNode refChildNode = positionNode.SelectSingleNode("//Entities/Entity[@name='account']/MenuBar");

positionNode.InsertAfter(originalDoc.ImportNode(newNode, true), refChildNode);

Dette fungerer sådan set fint nok, lige bortset fra at <ToolBarSpacer /> ikke kommer med, da det kun er <Button> der hentes ud. Vælger jeg et højere niveau når newNode hentes ud, får jeg <ToolBar> også med og det går heller ikke. Har forsøgt flere alternativer med at tilføje <ToolBarSpacer /> til newNode, men ude held.
Avatar billede arne_v Ekspert
02. juli 2009 - 14:27 #1
Hvad med 2 x (SelectSingleNode + InsertAfter) ?
Avatar billede baddaydaddy Nybegynder
02. juli 2009 - 14:43 #2
Har forsøgt så meget frem og tilbage, så tror nok du må give et eksempel på hvad du mener...
Avatar billede baddaydaddy Nybegynder
02. juli 2009 - 16:29 #3
Efter meget frem og tilbage fandt jeg omsider en løsning der virkede... Om ikke andet så gav du mig i hvert fald en idé at arbejde videre på, så smid lige et svar så får du dine points!
Avatar billede arne_v Ekspert
02. juli 2009 - 19:47 #4
ok
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