AGB  ·  Datenschutz  ·  Impressum  







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

Xml

Ein Thema von value is NULL · begonnen am 13. Sep 2010 · letzter Beitrag vom 21. Sep 2010
Antwort Antwort
Seite 3 von 3     123   
value is NULL

Registriert seit: 10. Sep 2010
249 Beiträge
 
#21

AW: Xml

  Alt 14. Sep 2010, 15:17
keiner ne idee ?
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#22

AW: Xml

  Alt 14. Sep 2010, 15:31
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.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott

Geändert von generic (14. Sep 2010 um 15:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Kalakmul
Kalakmul

Registriert seit: 11. Apr 2008
27 Beiträge
 
Delphi 2010 Professional
 
#23

AW: Xml

  Alt 14. Sep 2010, 16:32
Hallo,

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

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;
Wer fragt, ist ein Narr für 5 Minuten, wer nicht fragt, ist ein Narr ein Leben lang.
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#24

AW: Xml

  Alt 14. Sep 2010, 17:47
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.

Geändert von samso (14. Sep 2010 um 17:49 Uhr) Grund: Text->NodeValue
  Mit Zitat antworten Zitat
value is NULL

Registriert seit: 10. Sep 2010
249 Beiträge
 
#25

AW: Xml

  Alt 15. Sep 2010, 15:51
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Xml

  Alt 15. Sep 2010, 16:10
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
value is NULL

Registriert seit: 10. Sep 2010
249 Beiträge
 
#27

AW: Xml

  Alt 21. Sep 2010, 15:59
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

Geändert von value is NULL (21. Sep 2010 um 16:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Xml

  Alt 21. Sep 2010, 16:12
Zitat:
ich habe mir ein test.xml angelegt mit folgendem Inhalt:
Ein XML-Dokument darf nur einen Hauptnoten haben, du hast aber zwei <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 myNode.ChildNodes ansehn.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (21. Sep 2010 um 16:16 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 08:17 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