![]() |
Kann ich mit folgender Struktur arbeiten?
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:
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.
<?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> 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 |
Re: Kann ich mit folgender Struktur arbeiten?
Beantworte Dir die Frage mit einem
![]() |
Re: Kann ich mit folgender Struktur arbeiten?
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.
|
Re: Kann ich mit folgender Struktur arbeiten?
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:
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.
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 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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:53 Uhr. |
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-2025 by Thomas Breitkreuz