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.