Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   xml value eines nodes ändern wenn mehrere existieren (https://www.delphipraxis.net/205722-xml-value-eines-nodes-aendern-wenn-mehrere-existieren.html)

Gege 9. Okt 2020 12:15

xml value eines nodes ändern wenn mehrere existieren
 
Hallo zusammen,

ich habe mal ein Problem
habe eine xml Datei
Bspl.
 
<?xml version="1.0" encoding="utf-8"?>
<beispielobjlist ver="1.0">
<obj>
<type value="blaba"/>
<xdate value="04.10.2020"/>
<docfile name="dateiname.pdf"/>
<indexlist>
<index mode="new" name="KDNR" value="12345"/>
<index mode="new" name="KDNAME" value="Name des Kunden"/>
<index mode="new" name="NR" value="2040202241"/>
<index mode="new" name="BETRAG" value="92,5"/>
<index mode="new" name="VERMERK" value="275"/>
</indexlist>
</obj>
</beispielobjlist>
normal gehe so vor um
an die Werte zu kommen bzw. zu ändern

xmldocument1.ChildNodes['beispielobjlist'].ChildNodes.Nodes['obj'].ChildNodes['docfile'].Attributes['name']:="Dateiname.neu";

jetzt meine Frage .. wie komm ich direkt zB auf den <indexlist>.index -> KDNAME value
da index ja nun mehrmals existiert ?

hoffenlich hat jemand eine Idee
vg
Gege

himitsu 9. Okt 2020 12:37

AW: xml value eines nodes ändern wenn mehrere existieren
 
-> XPATH
Da kannst dann auch ganz einfach Attribut+Wert mit berücksichtigen, sowie direkt ein Attribut zurückgeben.

Delphi-Quellcode:
/indexlist/index[@name='KDNR']/@value
oder
Delphi-Quellcode:
/indexlist/index[1]/@value

Gege 9. Okt 2020 12:50

AW: xml value eines nodes ändern wenn mehrere existieren
 
diesen Syntax kenne ich in der Form jetzt gar nicht ..

wie gibt man das jetzt genau an ?

xmldocument1.ChildNodes['beispielobjlist/obj/indexlist/index[@name="KDNR"]'].Attributes['value']:="neuerwert";

geht nicht so richtig :shock:

Gege 9. Okt 2020 14:57

AW: xml value eines nodes ändern wenn mehrere existieren
 
hat sich erledigt ..
geht ja schon wieder um das XPATH

hab das ganz überlesen..
dazu findet man dummerweise nirgends ein simples Beispiel wie man das hier in Delphi anwendet

bau mir halt das xml mit Stringlist zusammen ist zwar nicht so elegant ..
aber hab jetzt einmal nicht die Zeit mich noch mehr wieder da rein zu vertiefen
und beim Programmablauf sieht man es eh nicht wie es gemacht wurde ;)

aber Danke für versuchte Hilfe

Der schöne Günther 9. Okt 2020 17:03

AW: xml value eines nodes ändern wenn mehrere existieren
 
Also wenn man hier im Forum nach "XPath" sucht, findet man eigentlich mehrere Beispiele.

Beispiel:
https://www.delphipraxis.net/197710-...ml#post1411940

Gege 10. Okt 2020 23:06

AW: xml value eines nodes ändern wenn mehrere existieren
 
in den Beispiel ist xpath doch nichts anderes als ein constante ??
das eigentliche ist dann ja XpathHelper.pas ..


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:11 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf