AGB  ·  Datenschutz  ·  Impressum  







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

xmlnode problem

Ein Thema von value is NULL · begonnen am 30. Sep 2010 · letzter Beitrag vom 1. Okt 2010
Antwort Antwort
value is NULL

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

xmlnode problem

  Alt 30. Sep 2010, 17:58
Hi leutz

habe folgenden code:

Delphi-Quellcode:
          myNode := config.DocumentElement.ChildNodes.First.ChildNodes.FindNode('accdevs');
          if myNode <> nil then begin
            myNodeList := MyNOde.ChildNodes;
            for i := 0 to mynodelist.Count -1 do begin
              if accdev = MyNodeList[i].nodevalue then begin
                logfilest.add(1, 'ACCDEV: '+accdev+' found in config:'+MyNodeList[i].nodevalue);
                i2 := i2 + 1;
              end;
            end;
          end;
          myNodelist.Clear;
ich rufe diese schleife öfter auf, habe jetzt aber das problem, das er mir hier:

for i := 0 to mynodelist.Count -1 do begin nicht mehr rein geht, was habe ich falsch gemacht?

danke im voraus LG
  Mit Zitat antworten Zitat
value is NULL

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

AW: xmlnode problem

  Alt 30. Sep 2010, 19:01
ich glaub ich weiß warum:
beim 2. aufruf ist der mynodelist.counter auf = 0 dh. er findet keine childnodes oder?

Delphi-Quellcode:
if myNode <> nil then begin
 myNodeList := MyNOde.ChildNodes;
zur erklärung, mein xml sieht so aus:

Code:
<config>
 <device id="1">
   <accdevs>
     <accdev>1</accdev>
     <accdev>2</accdev>
   </accdevs>
 </device>
 <device id="2">
   <accdevs>
     <accdev>3</accdev>
     <accdev>4</accdev>
   </accdevs>
 </device>
</config>
mein code sieht so aus:

Delphi-Quellcode:
CoInitialize(nil);
config := LoadXMLDocument('C:\test.xml');
xmlnode := config.DocumentElement.ChildNodes.First;
i3 := 0;
while (xmlnode <> nil) do begin
 i3 := i3 +1;
 if xmlnode.HasAttribute('id') then begin
   if xmlnode.Attributes['id'] = i3 then begin
      myNode := config.DocumentElement.ChildNodes.FindNode('accdevs');
      if myNode <> nil then begin
        myNodeList := MyNOde.ChildNodes;
        for i := 0 to mynodelist.Count -1 do begin
           logfilest.add(1, 'accvalue: '+MyNodeList[i].nodevalue);
           if accdev = MyNodeList[i].nodevalue then begin
               logfilest.add(1, 'ACCDEV: '+accdev+' found in config:'+MyNodeList[i].nodevalue);
               i2 := i2 + 1;
           end;
        end;
      end;
      myNodelist.Clear;
  end;
  xmlnode := xmlnode.NextSibling;
end;
warum liest er mir die accdevs nur für id = 1 aus? und nicht für id 2?

dane und lg
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: xmlnode problem

  Alt 30. Sep 2010, 19:20
Geht er denn ein zweites mal in die while-Schleife hinein?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
value is NULL

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

AW: xmlnode problem

  Alt 30. Sep 2010, 19:40
hier geht er noch rein

Delphi-Quellcode:
if myNode <> nil then begin
 myNodeList := MyNOde.ChildNodes;
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: xmlnode problem

  Alt 30. Sep 2010, 19:48
Ich denke, Du suchst wieder im ersten Knoten, der aber inzwischen geleert ist.
myNode := config.DocumentElement.ChildNodes.FindNode('accdevs'); Lass Dir mal das XML-Dokument nach dem ersten Schleifendurchlauf anzeigen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
value is NULL

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

AW: xmlnode problem

  Alt 30. Sep 2010, 19:59
das stimmt!
wie wäre das zu realisieren? so vielleicht?

mynode := config.DocumentElement.NextSibling;
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: xmlnode problem

  Alt 30. Sep 2010, 20:08
Kann ich nicht sicher sagen (da die XML-Kompos immer etwas unterschiedlich zu handhaben sind).
Wenn Die Struktur immer in der festgelegten Form vorliegt geht vielleicht auch so etwas wie mynode := XmlNode.ChildNodes[0].ChildNodes[0]
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
value is NULL

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

AW: xmlnode problem

  Alt 30. Sep 2010, 20:21
die Struktur ist immer die selbe, weiß jedoch nicht wo ich das implementieren soll....
  Mit Zitat antworten Zitat
value is NULL

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

AW: xmlnode problem

  Alt 1. Okt 2010, 12:08
habe den fehler gefunden:
myNode := xmlnode.ChildNodes.FindNode('accdevs'); diese Zeile machts möglich...
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:50 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