Einzelnen Beitrag anzeigen

geldis

Registriert seit: 19. Jan 2022
39 Beiträge
 
#1

XML appendchild/ Insertbefore

  Alt 11. Aug 2022, 09:07
Moin Moin.
Ich murkse mich seit Ewigkeiten mit der Methode insertBefore für XML ab.

Also : Folgender Code würde ein neues Element an das Ende des unten gezeigten Schnipsels einer XML.
Delphi-Quellcode:
  ItemListe := CoDOMDocument.create;
  ItemListe.Load(ItemFile);
  ItemListeRootNode := ItemListe.DocumentElement;
  ItemListeSingleNode := ItemListeRootNode.SelectSingleNode('//Asset[GUID="24053"]');
  NewItemNode := ItemListe.CreateElement('Icon');
  NewCreatedNode := ItemListeSingleNode.appendChild(NewItemNode);
Soweit so gut.Oft gemacht.Immergeklappt.

Das ist ein Knoten der XML und ich möchte eigntlich folgendes:
Code:
<Asset>
  <Template>ItemEffectTargetPool</Template>
   <Values>
    <Standard>
     <GUID>24053</GUID>
     <Name>alle Gebäude der Schwerindustrie</Name>
[COLOR="SeaGreen"]--> hier soll der neue Knoten hin[/COLOR]
    </Standard>
    <ItemEffectTargetPool>
     <EffectTargetGUIDs>
      <Item>
       <GUID>1010296</GUID>
       <Name>Stahlwerk</Name>
[COLOR="SeaGreen"]--> hier soll auch ein neuer Knoten hin[/COLOR]                        
      </Item>
      <Item>
       <GUID>1010297</GUID>
       <Name>Hochofen</Name>
[COLOR="SeaGreen"]--> hier soll ebenso ein neuer Knoten hin[/COLOR]
      </Item>
     </EffectTargetGUIDs>
    </ItemEffectTargetPool>
  </Values>
</Asset>
Und da ist die Angabe der Position an der der neue Knoten gesetzt werden soll mein Problem. insertbefore will den Namen des neuen Knotens und natürlich die Position des Knotens vor den der neue gesetzt werden soll.
Was habe ich jetzt alles durch. SelectSingleNode zum Beispiel. Aber nee.
Fehlermeldung: "Der Knoten muss ein neuer Knoten des übergeordneten Nebenunterknotens des berühmten Hauptknotens der Unterknoten sein'. Oder so ähnlich. Mir fällt nichts mehr ein.

Hat jemand eine Ahnung?


geldis
  Mit Zitat antworten Zitat