AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML XML Node suchen und Element auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

XML Node suchen und Element auslesen

Ein Thema von matashen · begonnen am 14. Jan 2013 · letzter Beitrag vom 15. Jan 2013
Antwort Antwort
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#1

XML Node suchen und Element auslesen

  Alt 14. Jan 2013, 06:41
Hallo,

nachdem ich mich in die Grundlagen von XML etwas eingearbeitet habe(ein paar Daten ablegen statt in einem Ini in ein XML und wieder auslesen), muss ich nun schon was komplexeres machen. Ich muss einen Export aus einem anderen Programm auswerten. Ursprünglich passierte das mittels eines VBS Makros das dann ewig lief. jetzt solls mit nem Extraprogramm und einem XML-Export passieren das ich dann eben auswerten muss. Das XML hat so um die 1600 Elemente wobei viele Nodes den gleichen Namen haben aber ID Elemente existieren über die man die einzelnen Nodes identifiezieren kann. Attribute existieren nicht.

Ach ja vieleicht wichtig: ich hab Delphi XE2 und nutze hier die VCL und nicht FM.

Bin im Netzt auf viele Infos gestoßen, leider gibt es soviele Libs das ich damit nicht weitergekommen bin.

Ich hab jetzt mal ein TXMLDocument auf die Oberfläche geklatscht und dann das XML in ein Treeview eingelsen. klappt soweit.
Der Code:
Delphi-Quellcode:
procedure TSiplaceXML.recInsertNodes(rootNode: IXMLNode; Node: TTreeNode);
var i : Word;
begin
  if rootNode.ChildNodes.Count > 0 then
    for i := 0 to rootNode.ChildNodes.Count-1 do begin
      if rootNode.ChildNodes[i].NodeName<>'#textthen
          recInsertNodes(rootNode.ChildNodes[i],TreeView1.Items.AddChild(node,rootNode.ChildNodes[i].nodename))
          else
          recInsertNodes(rootNode.ChildNodes[i],TreeView1.Items.AddChild(node,rootNode.ChildNodes[i].nodevalue))
      end;
  end;
Sieht dann so aus:
tree.png


Nun möchte ich einzelne Elemente gezielt auslesen.
Ich habs zum Test auf das Element SetupName abgesehen das ein weiterer Node zu PrintLine ist.
Und ich bekomm ne Exception geschmissen.
Delphi-Quellcode:
  
..
var
    activenode: IXMLNode;
    allnodes:ixmlnodelist;
..
begin
..
activenode:=SiProXML.documentelement.ChildNodes.findnode('PrintLine');
listbox1.Items.Add(activenode.childnodes.Nodes[SiProXML.documentelement.ChildNodes.FindNode('SetupName')].nodevalue);
..
Ich bin mir sicher einer von euch kennt die Antwort

Bitte keine Suchverweise ich hab mich da schon nen halben tag rumgetrieben und nichts gefunden was geholfen hätte.


Gruß Matthias
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#2

AW: XML Node suchen und Element auslesen

  Alt 14. Jan 2013, 08:46
OK,

Denkfehler von mir nach weiteren Stunden grübelns, den Node falsch aufgerufen.

Habs jetzt so gelöst

 listbox1.Items.Add(SiProXML.documentelement.ChildNodes['PrintLine'].ChildNodes['SetupName'].nodevalue);
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#3

AW: XML Node suchen und Element auslesen

  Alt 14. Jan 2013, 09:35
und schon die nächste Frage.

Wenn es mehrere Nodes nach dem root gibt die den selben Namen haben, wie kann ich auf untergeordnete Nodes dazu zugreifen.

Delphi-Quellcode:
  allnodes:=Siproxml.DocumentElement.ChildNodes['PrintMachine'];

  for i:=0 to allnodes.Count-1 do begin;
      activenode:=allnodes.Get(i);
funktioniert nicht, denn sobald ich ein ChildNode mit Namen aufrufe wird es nicht als NodeList sondern als einzelner Node behandelt. Ich bräuchte aber die Liste aller Nodes mit gleichem Name um in den untergeordneten Nodes weitere Daten abzurufen.

Wie mach ich das?
Matthias
Das Leben ist eines der härtesten.
  Mit Zitat antworten Zitat
matashen

Registriert seit: 29. Jan 2007
Ort: daheim
460 Beiträge
 
Delphi XE2 Enterprise
 
#4

AW: XML Node suchen und Element auslesen

  Alt 15. Jan 2013, 07:58
Hallöchen,

gibts denn niemanden der sich mit XML beschäftigt? Oder sind da alle beim Skifahren in den Alpen?

*push*

Gruß Matthias
Matthias
Das Leben ist eines der härtesten.
  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 22:39 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