Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   FreePascal Wert in XML finden? (https://www.delphipraxis.net/205857-wert-xml-finden.html)

LPascal 23. Okt 2020 19:27

Delphi-Version: 5

Wert in XML finden?
 
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!

Klaus01 24. Okt 2020 08:52

AW: Wert in XML finden?
 
.. 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

LPascal 24. Okt 2020 11:15

AW: Wert in XML finden?
 
Zitat:

Zitat von Klaus01 (Beitrag 1476056)
.. 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?

Klaus01 24. Okt 2020 12:14

AW: Wert in XML finden?
 
.. 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

LPascal 24. Okt 2020 12:45

AW: Wert in XML finden?
 
Hallo Klaus,

danke Dir! Ich schaue mal nach!

zeras 24. Okt 2020 12:50

AW: Wert in XML finden?
 
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?

LPascal 26. Okt 2020 08:41

AW: Wert in XML finden?
 
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. :thumb:

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?

Klaus01 26. Okt 2020 08:56

AW: Wert in XML finden?
 
.. 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

LPascal 26. Okt 2020 09:12

AW: Wert in XML finden?
 
Zitat:

Zitat von Klaus01 (Beitrag 1476096)
.. 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.

Klaus01 26. Okt 2020 09:20

AW: Wert in XML finden?
 
.. 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


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 Uhr.
Seite 1 von 4  1 23     Letzte »    

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