Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Xml (https://www.delphipraxis.net/154484-xml.html)

value is NULL 14. Sep 2010 15:17

AW: Xml
 
keiner ne idee :( ?

generic 14. Sep 2010 15:31

AW: Xml
 
Neben den Try / Except gibt es auch Try / Finally.

Delphi-Quellcode:
// Speicher holen
a:=TEinObjekt.Create;
try

  try
    tuWasMitException();
  except
    hierAufraeumenWennFehler();
  end;

 
finally
  // Speicher aber immer! freigeben
  a.free;
end;
btw. zum Abfragen von XML biete sich auch XPath an.

Kalakmul 14. Sep 2010 16:32

AW: Xml
 
Hallo,

mit dem Befehl "Count" kannst Du die Anzahl der Unterknoten ermitteln:

Delphi-Quellcode:
Anzahl := SubNode.ChildNodes.Count;
Dann kannst Du mittels Schleife die einzelnen Einträge auslesen:

Delphi-Quellcode:
for Nr := 1 to Anzahl do
begin
  Eintrag[Nr] := VarToStr(SubNode.ChildValues['Dev' + IntToStr(Nr)]));
end;

samso 14. Sep 2010 17:47

AW: Xml
 
Delphi-Quellcode:
program Test1;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  ActiveX,
  XMLIntf,
  XMLDoc;

var
  i: Integer;
  myConfig: IXMLDocument;
  myNode: IXMLNode;
  myNodeList: IXMLNodeList;

begin
  try
    CoInitialize(nil);
    myConfig := LoadXmlDocument('Config.xml');
    myNode := myConfig.DocumentElement.ChildNodes.First.ChildNodes.FindNode('devs');
    if myNode<>nil
    then begin
      myNodeList := myNode.ChildNodes;
      for i := 0 to myNodeList.Count - 1 do
        WriteLn(myNodeList[i].NodeName, ': ', myNodeList[i].NodeValue);
    end;
    ReadLn;
  except
    on E:Exception do
      Writeln(E.Classname, ': ', E.Message);
  end;
end.

value is NULL 15. Sep 2010 15:51

AW: Xml
 
Hi leutz

also ich bin meinem Ziel schon ziemlich nahe, ich kann mir jetzt nahezu ALLES auslesen, bis auf eins:

Code:
<virtualdrive id="1">
       NODES
       NODES
       NODES
       NODES
</virtualdrive>
jetzt kann ich aber mehrere blöcke haben wie zB:

Code:
<virtualdrive id="1">
       NODES
       NODES
       NODES
       NODES
</virtualdrive>  
<virtualdrive id="2">
       NODES
       NODES
       NODES
       NODES
</virtualdrive>
dh. ich muss praktisch wieder eine zähler schleife machen und die ID abfragen
? wie würde das in ungefähr funktionieren?

himitsu 15. Sep 2010 16:10

AW: Xml
 
Schau dir doch mal XPath an.

http://de.wikipedia.org/wiki/XPath
http://www.w3.org/TR/xpath/
http://www.w3schools.com/xpath/default.asp
...
Bei Google suchenXPath

value is NULL 21. Sep 2010 15:59

AW: Xml
 
Hi wieder mal :)

ich habe mir ein test.xml angelegt mit folgendem Inhalt:

Code:
<test id="1">
    <wert>100</wert>
    <wert2>500</wert2>
</test>
<test id="2">
    <wert>800</wert>
    <wert2>1200</wert2>
</test>
mein Code sieht wie folgt aus:

Delphi-Quellcode:
program test;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  xmldoc,
  xmlintf,
  activex;

var
  i: Integer;
  myConfig: IXMLDocument;
  myNode: IXMLNode;

begin
    CoInitialize(nil);
    myConfig := LoadXmlDocument('C:\test.xml');
    myNode := myConfig.DocumentElement.ChildNodes.First;
    if (myNode <> nil) then begin
      while (myNode <> nil) do begin
        if (myNode.HasAttribute('id')) then
          Writeln('ID: '+myNode.Attributes['id']);
          mynode := mynode.NextSibling;
        end;
    end;
end.
Damit bekomme ich schön folgendes Ergebnis:
Code:
ID: 1
ID: 2
Das ist für mich ja schon ein großer Schritt :) aaaabbbeeeerrr
Wie ist es möglich, den "wert2" von "testid 1" zu bekommen bzw. von "testid2" ?

irgendwelche Ideen?

danke schon mal

LG

himitsu 21. Sep 2010 16:12

AW: Xml
 
Zitat:

ich habe mir ein test.xml angelegt mit folgendem Inhalt:
Ein XML-Dokument darf nur einen Hauptnoten haben, du hast aber zwei
Delphi-Quellcode:
<test ...>
.
Wenn deine Datei also wirklich genau so aussieht, dann sollte MSXML dieses eigentlich sofort bemängeln.

myNode enthält deine Knoten und da du von diesen die Unterknoten willst, würde ich mit mal
Delphi-Quellcode:
myNode.ChildNodes
ansehn.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr.
Seite 3 von 3     123   

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 by Thomas Breitkreuz