Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Problem mit XML auslesen/schreiben (https://www.delphipraxis.net/155719-problem-mit-xml-auslesen-schreiben.html)

VinceK 4. Nov 2010 20:38

Problem mit XML auslesen/schreiben
 
Hallo.

Bin neu hier und hoffe auf eure Hilfe.
Ich habe eine XML mit folgendem Inhalt:

XML-Code:
<dataentry>
   <Zeitstempel>18.02.2010 - 12:21:54:340</Zeitstempel>
   <Daten>
      <LOSE index="1">
         <NAME>Test</NAME>
         <VALUE index="1">
            <DESCRIPTIONLCID1031>Daten</DESCRIPTIONLCID1031>
            <DESCRIPTIONLCID1032></DESCRIPTIONLCID1032>
            <DESCRIPTIONLCID1033>:1 Value 1</DESCRIPTIONLCID1033>
            <TYP>13</TYP>
            <NUMBER>2</NUMBER>
            <LENGTH>100</LENGTH>
            <FI>false</FI>
            <FA>true</FA>
            <UNIT>mm</UNIT>
         </VALUE>
         <VALUE index="2">
            <DESCRIPTIONLCID1031>Recipe 19</DESCRIPTIONLCID1031>
            <DESCRIPTIONLCID1032></DESCRIPTIONLCID1032>
            <DESCRIPTIONLCID1033>:1 Value 2</DESCRIPTIONLCID1033>
            <TYP>19</TYP>
            <NUMBER>0</NUMBER>
            <LENGTH>0</LENGTH>
            <FI>false</FI>
            <FA>false</FA>
            <UNIT>mm</UNIT>
         </VALUE>
          usw..
Mit TXMLDocument versucht ich den Inhalt auszulesen und zu schreiben.
Der erste Knoten <Zeitstempel> ist kein Problem. Allerdings scheitere ich daran, die Inhalte von z.B. <Name>, <Typ> auszulesen. Also alles in <Lose index="ATT"> und folgend <Valua index="ATT">.

Über einen Tip oder ein kleines Beispiel wäre ich sehr dankbar.

Gruss

himitsu 4. Nov 2010 20:55

AW: Problem mit XML auslesen/schreiben
 
Ich würde hier einfach mal auf Bei Google suchenXPath verweisen.

<LOSE index="1">
LOSE[@index=1]

Ansonsten könnte man zwar auch noch direkt über einen Index auf die Nodes zugreifen, aber über den Namen ist es wohl sicherer.

Delphi-Quellcode:
ChildNodes[2]
, da 2. Subknoten
Delphi-Quellcode:
ChildNodes['VALUE[@index=1]']
.


Und willkommen an Board :hi:

VinceK 6. Nov 2010 09:11

AW: Problem mit XML auslesen/schreiben
 
Danke für deine schnelle Hilfe.
Hab´s mal ausprobiert aber hatte leider keinen Erfolg. Folgendermassen wollte ich den Namen in ein Memo schreiben:

Delphi-Quellcode:
Memo2.Lines.Add(myFirstXML.DocumentElement.ChildNodes['dataentry'].ChildNodes['Daten'].ChildNodes['LOSE[@index=1]'].ChildNodes['Name'].Text);
bekomme den Fehler:
'Dieser Name darf nicht das Zeichen'[' erhalten: LOSE-->[<--@index=1]'

Habe mir die xPath schon angeschaut und jede erdenkliche Möglichkeit ausprobiert. Beim Auslesen der XML bekomme ich diesen Fehler.

Denkfehler?! Syntaxfehler?!

stahli 6. Nov 2010 10:29

AW: Problem mit XML auslesen/schreiben
 
Für den Anfang hilft Dir das vielleicht?

VinceK 7. Nov 2010 13:49

AW: Problem mit XML auslesen/schreiben
 
Hat mir super geholfen. Danke. Echt gut erklärt. :thumb:

himitsu 7. Nov 2010 20:56

AW: Problem mit XML auslesen/schreiben
 
Nochmal speziell auf dieses Beispiel/Poblem:
.DocumentElement steht für den Root-Knoten
und über .ChildNodes['dataentry'] wolltest du auf äußersten Knoten zugreifen, also auf den Root-Knotten, in welchem du da aber schon drinnen bist, so daß es davon kein Unterknoten sein kann, bzw. er kann kein Unterknoten von sich selber sein.

Und man kann "Pfade" verbinden:
Delphi-Quellcode:
myFirstXML.DocumentElement.ChildNodes['Daten'].ChildNodes['LOSE[@index=1]'].ChildNodes['Name'].Text

myFirstXML.DocumentElement.ChildNodes['Daten\LOSE[@index=1]\Name'].Text


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 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