AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Kann ich mit folgender Struktur arbeiten?
Thema durchsuchen
Ansicht
Themen-Optionen

Kann ich mit folgender Struktur arbeiten?

Ein Thema von Piro · begonnen am 17. Mär 2009 · letzter Beitrag vom 17. Mär 2009
Antwort Antwort
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

Kann ich mit folgender Struktur arbeiten?

  Alt 17. Mär 2009, 20:19
Guten Abend zusammen,

wollte mal nachfragen, ob die folgende XML Struktur machbar ist und wie sie mit IXMLDOMDocument2 bearbeiten kann.

Hier meine Struktur:

SQL-Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<netadmin>
   <item>
      <id>1</id>
      <name>Name 1</name>
      <path>Path 1</path>
      <param>Param 1</param>
      <icon>1</icon>
      <category>1</category>
   </item>
   <item>
      <id>2</id>
      <name>Name 2</name>
      <path>Path 1</path>
      <param>Param 2</param>
      <icon>2</icon>
      <category>2</category>
   </item>
   <ping>
      <name>JUN0COSADC1</name>
      <name>HAMN0COSADC2</name>
      <name>JUPRDS10</name>
   </ping>
</netadmin>
Alle item Einträge kommen in VirtualTreeView mit Hilfe einer Type Definition (in Anlehnung an das Tutorial= und alle ping Einträge sollen in ein Memo. Die item Einträge kann ich auslesen und bearbeiten. Das ist alles kein Problem.

Nur die ping Einträge bekomme ich irgendwie nicht hin auch weil sie in einem Memo gespeichern werden. Ich könnte auch bei Sachen trennen und 2 Dateien machen aber das möchte ich ungern. Wäre schön wenn alles in einer XML Datei wäre.

Ist das machbar oder muss ich meine Struktur ändern?

Gruß, Sven
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Kann ich mit folgender Struktur arbeiten?

  Alt 17. Mär 2009, 20:43
Beantworte Dir die Frage mit einem XML-Validator selbst.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Reinhardtinho
Reinhardtinho

Registriert seit: 26. Feb 2007
411 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Kann ich mit folgender Struktur arbeiten?

  Alt 17. Mär 2009, 21:20
Ich kenne mich zwar nicht mit IXMLDOMDocument2 aus, aber von der Struktur her sieht es passabel aus. Ich arbeite in Delphi immer mit TJvSimpleXML von den JEDIs und da kann man solch ein Struktur problemlos abbilden.
Ich habe viel von meinem Geld für Alkohol, Weiber und schnelle Autos ausgegeben ... Den Rest habe ich einfach verpraßt.

George Best - 22.05.1946 - 25.11.2005 - nordirischer Fußballspieler
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#4

Re: Kann ich mit folgender Struktur arbeiten?

  Alt 17. Mär 2009, 21:53
Ich habe die MS XML 4 Bibliothek eingebunden (IXMLDOMDocument2).

Habe die Validierung durchgeführt und keine Fehler.

Aber wie kann ich nun alle Daten auslesen.

Die item Einträge bekomme ich mit folgendem Code.
Delphi-Quellcode:
xmlDoc : IXMLDOMDocument2;
...
procedure ReadXML
var
 i : Integer;
 xmldata : IXMLDOMNodeList;
 subNode : IXMLDOMNode;
 Data : TOData;
begin
 // XML initialisieren
 xmlDoc := CoDOMDocument40.Create;
 xmlDoc.setProperty('NewParser', true);
 if FileExists(AppPath + XML_FNAME) then
   xmlDoc.load(AppPath + XML_FNAME)
 else
   xmlDoc.loadXML('<?xml version="1.0" encoding="ISO-8859-1" ?><netadmin></netadmin>');

 xmldata := xmlDoc.documentElement.selectNodes('item');
 for i:=0 to xmldata.length - 1 do
 begin
   Data := TOData.Create;
   with Data do
   begin
     subNode := xmldata.item[i].selectSingleNode('id');
     id := subNode.Text;
     subNode := xmldata.item[i].selectSingleNode('name');
     name := subNode.Text;
     subNode := xmldata.item[i].selectSingleNode('path');
     path := subNode.Text;
     subNode := xmldata.item[i].selectSingleNode('param');
     param := subNode.Text;
     subNode := xmldata.item[i].selectSingleNode('icon');
     if subNode.Text <> 'then
       icon := StrToInt(subNode.Text)
     else
       icon := -1;
     subNode := xmldata.item[i].selectSingleNode('category');
     if subNode.Text <> 'then
       category := StrToInt(subNode.Text)
     else
       category := 0;
   end;
   vst_data.AddChild(nil, Data);
 end;
end;
Die Daten werden in VirtualTreeView geladen. Wenn ich das nun expliziet für die ping Einträge mache und diese ins Memo lade, liest er nur den 1. Eintrag aus.

Die weitere Frage die sich mir stellt. Wie kann ich auf die ping Einträge zu greifen? Also bearbeiten, wenn ich meine Struktur benutze.

Vielen Dank im voraus.
  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 01:19 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