AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Wert in XML finden?

Ein Thema von LPascal · begonnen am 23. Okt 2020 · letzter Beitrag vom 13. Nov 2020
Antwort Antwort
Seite 1 von 4  1 23     Letzte » 
LPascal

Registriert seit: 23. Okt 2020
30 Beiträge
 
#1

Wert in XML finden?

  Alt 23. Okt 2020, 20:27
Delphi-Version: 5
Hallo zusammen,
bin neu hier und habe gleich diese Frage: also ich habe viele XML-Dateien dieser Art. Gesucht soll nach der Anrede "Dr.", was natürlich an unterschiedlichen Stellen sich befinden kann, oder gar fehlen kann. Ist diese Gefunden - soll sein Alter ausgelesen werden, und das Auslesen des Alters gelingt mir nicht. Könnte mir da jemand auf die Sprünge helfen?

Code:
<PDB>
  <Header>
    <Daten>
      <Personen>
        <Anrede>Herr</Anrede>
        <Vorname>Otto</Vorname>
        <Nachname>Müller</Nachname>
        <Alter>45</Alter>
      </Personen>
      <Personen>
        <Anrede>Frau</Anrede>
        <Vorname>Atta</Vorname>
        <Nachname>Schmidt</Nachname>
        <Alter>56</Alter>
      </Personen>
      <Personen>
        <Anrede>Dr.</Anrede>
        <Vorname>Michael</Vorname>
        <Nachname>Meier</Nachname>
        <Alter>55</Alter>
      </Personen>
      <Personen>
        <Anrede>Herr</Anrede>
        <Vorname>Gerd</Vorname>
        <Nachname>Schulz</Nachname>
        <Alter>33</Alter>
      </Personen>
   </Daten>
  </Header>
</PDB>

Delphi-Quellcode:
    ReadXMLFile(Doc, 'test.XML');
    NList := Doc.GetElementsByTagName('Anrede');

    if Assigned(NList) then
    begin
      for i := 0 to NList.Count - 1 do
      begin
          if NList.Item[i].TextContent = 'Dr.then
          begin
            // wie hier das Alter von "Dr. Meier" auslesen?
          end;
      end;
    end;
Vielen herzlichen Dank!

Geändert von LPascal (23. Okt 2020 um 20:31 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.501 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Wert in XML finden?

  Alt 24. Okt 2020, 09:52
.. wieso iterierst Du nicht durch den Tag <Personen> und fragst dann die <Anrede> ab. Ist die Anrede Dr. dann kannst Du auch noch das Alter abfragen.
Grüsse Klaus
Klaus
  Mit Zitat antworten Zitat
LPascal

Registriert seit: 23. Okt 2020
30 Beiträge
 
#3

AW: Wert in XML finden?

  Alt 24. Okt 2020, 12:15
.. wieso iterierst Du nicht durch den Tag <Personen> und fragst dann die <Anrede> ab. Ist die Anrede Dr. dann kannst Du auch noch das Alter abfragen.
Grüsse Klaus
Ja, genau! Die Frage ist nur wie frage ich das Alter ab?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.501 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Wert in XML finden?

  Alt 24. Okt 2020, 13:14
.. Du itterierst über den Tag <Anrede>

Delphi-Quellcode:
   ReadXMLFile(Doc, 'test.XML');
    NList := Doc.GetElementsByTagName('Personen');

    if Assigned(NList) then
    begin
      for i := 0 to NList.Count - 1 do
      begin
          if NList.Item[i].FindNode('Anrede').TextContent = 'Dr.then
          begin
            NList.Items[i].FindNode('Alter').TextContent;
          end;
      end;
    end;
Die NList beinhalten alle Node mit dem Tag <Personen>.
In dem Node kannst Du dann Anrede und Alter abfragen.
Ich kenne leider nicht Deine xml Bibliothek - kann Dir daher nicht exakt sagen wie das geht.
Gibts da nicht sowas wie getNodeByName('Anrede') o.ä?

Grüße
Klaus
Klaus

Geändert von Klaus01 (24. Okt 2020 um 13:52 Uhr)
  Mit Zitat antworten Zitat
LPascal

Registriert seit: 23. Okt 2020
30 Beiträge
 
#5

AW: Wert in XML finden?

  Alt 24. Okt 2020, 13:45
Hallo Klaus,

danke Dir! Ich schaue mal nach!

Geändert von LPascal (24. Okt 2020 um 13:48 Uhr)
  Mit Zitat antworten Zitat
zeras

Registriert seit: 11. Mär 2007
Ort: Saalkreis
1.350 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Wert in XML finden?

  Alt 24. Okt 2020, 13:50
Deine Aufgabenstellung scheint nicht klar. Du schreibst oben, dass du nach Dr. suchst und dann das Alter auslesen möchtest. Daraus deute ich, das, wenn du keinen Dr. findest, das Alter nicht interessant ist. Bei Klaus wird doch nach Dr. gesucht und erst wenn dieser gefunden wurde, dann wurde das Alter ermittelt.
Nach was willst du nun suchen?
Es ist nie falsch das Richtige zu tun!
- Mark Twain
  Mit Zitat antworten Zitat
LPascal

Registriert seit: 23. Okt 2020
30 Beiträge
 
#7

AW: Wert in XML finden?

  Alt 26. Okt 2020, 09:41
Hallo zusammen,
@zeras Du hast Recht. XML ist noch ein Neuland für mich, daher stand ich auf dem Schlauch.
@Klaus01 Danke Dir, so läuft das also.

Die weitere Aufgabenstellung ist, wenn sich in der XML ein Dr. befindet und er über 50 Jahre alt ist, dann werden ihm zwei Praktikanten zugewiesen und dessen Namen in die XML geschrieben. Jetzt muss ich praktisch in die bestehende XML-Datei folgendes reinschreiben:

Code:
<Personen>
  <Anrede>Herr</Anrede>
  <Vorname>Emil</Vorname>
  <Nachname>Schmidt</Nachname>
  <Alter>19</Alter>
</Personen>
<Personen>
  <Anrede>Frau</Anrede>
  <Vorname>Ute</Vorname>
  <Nachname>Boden</Nachname>
  <Alter>20</Alter>
</Personen>
Und da habe ich erstmal keine Ansätze. Kann ich die oben genannten Datensätze einfach in die XML-Datei hineinschreiben, oder muss ich die komplette Datei einlesen, und modifiziert neu schreiben?
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.501 Beiträge
 
Delphi 10.3 Rio
 
#8

AW: Wert in XML finden?

  Alt 26. Okt 2020, 09:56
.. ich denke kannst Du schon da hineinschreiben - nur
Wie willst Du die Bezüge zum Dr. zu den Praktikanten hineinbringen?

Da fehlt meiner Meinung nach ein Tag bei den Praktikaten - der darauf hindeutet wer für ihn/sie zuständig/verantwortlich ist.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
LPascal

Registriert seit: 23. Okt 2020
30 Beiträge
 
#9

AW: Wert in XML finden?

  Alt 26. Okt 2020, 10:12
.. ich denke kannst Du schon da hineinschreiben - nur
Wie willst Du die Bezüge zum Dr. zu den Praktikanten hineinbringen?

Da fehlt meiner Meinung nach ein Tag bei den Praktikaten - der darauf hindeutet wer für ihn/sie zuständig/verantwortlich ist.

Grüße
Klaus
Ja, da gibt es entsprechende Tags dafür, ich habe sie nur weggelassen, da sonst mein XML-Beispiel zu lange wird. Hast Du vielleicht einen Tipp für mich wie das gehen könnte? Also erst für die Tags Anrede, Vor- u. Nachname sowie Alter, den Rest verarbeite ich selber wenn ich mal die Logik verstanden habe.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.501 Beiträge
 
Delphi 10.3 Rio
 
#10

AW: Wert in XML finden?

  Alt 26. Okt 2020, 10:20
.. nun da ich Deine XML Library nicht kenne..

Im Prinzip so:
Du erstellst Dir einen neuen Knoten <Personen> diese fügst Du weiter Unterknoten hinzu.
Den <Personen>-Knoten kannst Du dann dem Knoten <Daten> hinzufügen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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