AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

wie komm ich nur an die Werte ?

Ein Thema von Gege · begonnen am 6. Mär 2018 · letzter Beitrag vom 8. Mär 2018
Antwort Antwort
Seite 1 von 2  1 2      
Gege

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

wie komm ich nur an die Werte ?

  Alt 6. Mär 2018, 19:29
Hallo Leute,
ich hab mal wieder ein Problem und steh gerade auf den Schlauch ..

ich hab ein XML Dokument

Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<Document>
  <Doctype>PDF</Doctype>
  <Index>
   <Var Name="*FIRMA" Value="F61" />
   <Var Name="*BELEGART" Value="VK" />
   <Var Name="*BELEGKREIS" Value="LF" />
   <Var Name="*BELEGNR" Value="0845578" />
   <Var Name="*BELEGDATUM" Value="2018-02-22" />
   <Var Name="*KONTOTYP" Value="D" />
   <Var Name="*ADRESSNR" Value="71362" />
  </Index>
</Document>
mein Ziel ist es einen Wert bei

<Var Name="*ADRESSNR" Value="71362" />

in zum Beispiel
<Var Name="*ADRESSNR" Value="08157" />

zu ändern und

dann alles wieder abzuspeichern.

Ich habe mit XMLDocument geladen und komme auch z.b auf den Doctype aber auf das Attribut Value von Var habe ich
meine Probleme..

Code:

 ( xmldoc:IXMLNode; )

xmldoc.ChildNodes.Nodes['Index'].ChildNodes['Var'].Attributes['Value'].NodeValue .. ??
funktioniert natürlich nicht .. hmm wie greif ich denn nur darauf zu
kann mir einer helfen ?

speichern ist dann kein problem .. mit xmldoc.SaveToFile

viele Grüße Gege
Gerd
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: wie komm ich nur an die Werte ?

  Alt 6. Mär 2018, 19:37
Bei Google suchenXPath / Bei Google suchendelphi xml xpath, denn da kannst du nach dem Node "Var", welcher ein Attribut Name="*ADRESSNR" suchen/fragen

oder mit Index zugreifen, also alles Nodes "Var" auflisten, mit einer Schleife alle durchgehn und deren Attribute prüfen,
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 6. Mär 2018 um 19:39 Uhr)
  Mit Zitat antworten Zitat
Gege

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

AW: wie komm ich nur an die Werte ?

  Alt 6. Mär 2018, 19:47
xpath .. ist das eine Komponente ?
Gerd
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.487 Beiträge
 
Delphi 12 Athens
 
#4

AW: wie komm ich nur an die Werte ?

  Alt 7. Mär 2018, 09:20
Nicht getestet:
Delphi-Quellcode:
procedure SetIndexValue(ADoc: IXMLDocument; const AIndex, AValue: string);
var
  IndexNode, Node: IXmlNode;
  i: Integer;
begin
  IndexNode := ADoc.ChildNodes.Nodes['Index'];
  {Suchen und Ändern}
  for i := 0 to IndexNode.ChildNodes.Count - 1 do
  begin
    Node := IndexNode.ChildNodes[i];
    if (Node.NodeName = 'Var') and (Node.Attributes['Name'] = AIndex) then
    begin
      Node.Attributes['Value'] := AValue;
      Exit;
    end;
  end;
  {nicht gefunden, neu anlegen}
  Node := IndexNode.AddChild(AIndex);
  Node.Attributes['Name'] := AIndex;
  Node.Attributes['Value'] := AValue;
end;

SetIndexValue(xmlDox, '*ADRESSNR', '08157');
  Mit Zitat antworten Zitat
Gege

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

AW: wie komm ich nur an die Werte ?

  Alt 7. Mär 2018, 12:40
ok kann ich mal testen ..

melde mich mit Ergebnis

danke schon mal
Gerd
  Mit Zitat antworten Zitat
Gege

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

AW: wie komm ich nur an die Werte ?

  Alt 7. Mär 2018, 13:40
hab es gerade probiert ..

leider kommt das er den Knoten Index nicht finden konnte ?

kommt auch wenn ich z.B.

showmessage(xmldocument1.ChildNodes['Index'].Nodename);

mache
Gerd
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: wie komm ich nur an die Werte ?

  Alt 7. Mär 2018, 13:10
xpath .. ist das eine Komponente ?
Wie wäre es, wenn du dir die ersten 2-3 Ergebnisse der verlinken Suchen ansiehst?
1.) was es ist
2.) wie man es im Delphi nutzt

in etwa so
XMLDocument.DocumentElement.selectSingleNode('Index/Var[@Name="*ADRESSNR"]/attribute::Value').Value := '123456';
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Gege

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

AW: wie komm ich nur an die Werte ?

  Alt 8. Mär 2018, 11:58
ich hab ein XML Dokument

Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<Document>
  <Doctype>PDF</Doctype>
  <Index>
   <Var Name="*FIRMA" Value="F61" />
   <Var Name="*BELEGART" Value="VK" />
   <Var Name="*BELEGKREIS" Value="LF" />
   <Var Name="*BELEGNR" Value="0845578" />
   <Var Name="*BELEGDATUM" Value="2018-02-22" />
   <Var Name="*KONTOTYP" Value="D" />
   <Var Name="*ADRESSNR" Value="71362" />
  </Index>
</Document>
mein Ziel ist es einen Wert bei

<Var Name="*ADRESSNR" Value="71362" />

in zum Beispiel
<Var Name="*ADRESSNR" Value="08157" />

zu ändern ...
Code:

 ( xmldoc:IXMLNode; )

xmldoc.ChildNodes.Nodes['Index'].ChildNodes['Var'].Attributes['Value'].NodeValue .. ??
funktioniert natürlich nicht .. hmm wie greif ich denn nur darauf zu

die genaue Antwort ist

Code:
xmldocument1.ChildNodes['Document'].ChildNodes.Nodes['Index'].ChildNodes[6].Attributes['Value']:='08157';
falls es auch jemand braucht

viele Grüße
Gege
Gerd
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
601 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#9

AW: wie komm ich nur an die Werte ?

  Alt 8. Mär 2018, 13:42
xmldocument1.ChildNodes['Document'].ChildNodes.Nodes['Index'].ChildNodes[6].Attributes['Value']:='08157';

Falls es jemand braucht sollte dann bis hinten konsequent "benamst" werden!

Wer garantiert dass übermorgen noch ChildNodes[6] die Adressnummer ist?
Wäre da ebenfalls die Angabe des Namens '*ADRESSNR' sinnvoller?

Ciao
Stefan
  Mit Zitat antworten Zitat
Gege

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

AW: wie komm ich nur an die Werte ?

  Alt 8. Mär 2018, 14:02
Zitat:
Wer garantiert dass übermorgen noch ChildNodes[6] die Adressnummer ist?
weil ich diese xml immer selber als Vorlage öffne
und jeweils geändert nur unter anderen Namen abspeichere..
Hintergrund ist ich bekomme PDF Files in denen im Namen die '*ADRESSNR' steht und ich unter gleichen Namen die XML Datei dazu erzeugen muss
(Für ein Archivsystem)
Sicher die einfachste Methode ist die XML immer neu einfach zusammenzubauen
aber da es diese Funktionen nun mal gibt wollte ich sie auch nutzen
Gerd
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz