AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML xml value eines nodes ändern wenn mehrere existieren
Thema durchsuchen
Ansicht
Themen-Optionen

xml value eines nodes ändern wenn mehrere existieren

Ein Thema von Gege · begonnen am 9. Okt 2020 · letzter Beitrag vom 10. Okt 2020
Antwort Antwort
Gege

Registriert seit: 5. Sep 2011
Ort: Sachsen / Naunhof
77 Beiträge
 
Delphi XE7 Architect
 
#1

xml value eines nodes ändern wenn mehrere existieren

  Alt 9. Okt 2020, 12:15
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
Gerd
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: xml value eines nodes ändern wenn mehrere existieren

  Alt 9. Okt 2020, 12:37
-> XPATH
Da kannst dann auch ganz einfach Attribut+Wert mit berücksichtigen, sowie direkt ein Attribut zurückgeben.

/indexlist/index[@name='KDNR']/@value oder /indexlist/index[1]/@value
$2B or not $2B
  Mit Zitat antworten Zitat
Gege

Registriert seit: 5. Sep 2011
Ort: Sachsen / Naunhof
77 Beiträge
 
Delphi XE7 Architect
 
#3

AW: xml value eines nodes ändern wenn mehrere existieren

  Alt 9. Okt 2020, 12:50
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
Gerd
  Mit Zitat antworten Zitat
Gege

Registriert seit: 5. Sep 2011
Ort: Sachsen / Naunhof
77 Beiträge
 
Delphi XE7 Architect
 
#4

AW: xml value eines nodes ändern wenn mehrere existieren

  Alt 9. Okt 2020, 14:57
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
Gerd
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: xml value eines nodes ändern wenn mehrere existieren

  Alt 9. Okt 2020, 17:03
Also wenn man hier im Forum nach "XPath" sucht, findet man eigentlich mehrere Beispiele.

Beispiel:
https://www.delphipraxis.net/197710-...ml#post1411940
  Mit Zitat antworten Zitat
Gege

Registriert seit: 5. Sep 2011
Ort: Sachsen / Naunhof
77 Beiträge
 
Delphi XE7 Architect
 
#6

AW: xml value eines nodes ändern wenn mehrere existieren

  Alt 10. Okt 2020, 23:06
in den Beispiel ist xpath doch nichts anderes als ein constante ??
das eigentliche ist dann ja XpathHelper.pas ..
Gerd
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz