Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi XML Komplett auslesen (https://www.delphipraxis.net/99780-xml-komplett-auslesen.html)

Christian18 17. Sep 2007 20:46


XML Komplett auslesen
 
Hallo,

wie kann ich mein XML Dokument komplett auslesen? Ich habe da mal ein kleines Beispiel gemacht. Oder habe ich das XML Dokument falsch aufgebaut?

XML-Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<Language Lang="Deu">
  <UMain>
    <Button Name="B1" Caption="Neu" />
    <Button Name="B2" Caption="Bearbeiten" />
    <Button Name="B3" Caption="Löschen" />
  </UMain>
</Language>
Ich verwende die XML Komponente in Delphi.

Was ich vor habe:

ich will das Xml Dokument durchgehen.

Dann will ich den Button mit dem Namen B1 suchen und der soll dann die Caption "Neu" erhalten. Und so soll es immer weiter gehen, bis das XML Dokument zuende ist.

marabu 17. Sep 2007 21:02

Re: XML Komplett auslesen
 
Hallo Christian,

du kannst entweder einen tree walk (childNodes, rekursiv) über alle nodes des XML-Dokuments machen und die Komponenten mit FindComponent() suchen, oder du iterierst über die Komponenten deiner Form und suchst den passenden XML-Knoten mittels SelectSingleNode().

Grüße vom marabu

Christian18 21. Sep 2007 22:03

Re: XML Komplett auslesen
 
Hallo,

wie kann ich denn sowas komplett auslesen? Ich möchte einfach nacheinander die Attribute haben. Am besten in einem Record.

Den ersten Knoten von Button kann ich auslesen. Wie komme ich aber zum zweiten und dritten, ... n

LG Chris

Mackhack 21. Sep 2007 22:25

Re: XML Komplett auslesen
 
Zeig doch mal den Code den du bisher hast!

Christian18 21. Sep 2007 22:30

Re: XML Komplett auslesen
 
Zitat:

Zitat von Mackhack
Zeig doch mal den Code den du bisher hast!

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
  var Xml : TXMLDocument;
      s  : String;
begin
  Xml:=TXMLDocument.Create(Application);
  try
    Xml.FileName:=ExtractFilePath(Application.ExeName) + 'Xml.lng';
    Xml.Active:=True;

    s:=Xml.DocumentElement.ChildNodes['UMain'].ChildNodes['Button'].Attributes['Name'];
    ShowMessage(s);
  finally
    Xml.Destroy;
  end;
end;

Mackhack 21. Sep 2007 22:35

Re: XML Komplett auslesen
 
Ich hab noch nie mit der TXMLDocument was gemacht sondern nur Muetze1's xml lib genommen aber musst du nicht erstmal den Root aufbauen und dann von Ast zu Ast wandern?

Christian18 21. Sep 2007 22:40

Re: XML Komplett auslesen
 
Ja,

das habe ich mir auch schon gedacht, aber wie implementiere ich das? ich habe es noch nicht geschafft...

semo 21. Sep 2007 23:33

Re: XML Komplett auslesen
 
ne while schleife schreiben die alle childnodes von umain durchläuft, so müsste das funktioneren.

Christian18 22. Sep 2007 14:57

Re: XML Komplett auslesen
 
wann ist die bediengung der while schleife denn erfüllt??? ich suche schon die ganze zeit nach lastchild oder sowas. Ich habe noch nix gefunden.

LG Chris

semo 22. Sep 2007 15:06

Re: XML Komplett auslesen
 
a little bit pseudocode:
while assigned(xmlnode) do
begin
// do something
Node := node.Next;
end;

marabu 23. Sep 2007 14:26

Re: XML Komplett auslesen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Chris,

hier eine kleine Starthilfe:

Delphi-Quellcode:
procedure ExtractAttributes(parent: IXMLNode; s: TStrings; const aName, aValue: string);
var
  sName: string;
  node: IXMLNode;
begin
  node := parent.ChildNodes.First;
  while Assigned(node) do
  begin
    sName := VarToStr(node.Attributes[aName]);
    if sName <> '' then
      s.Values[sName] := VarToStr(node.Attributes[aValue]);
    if node.HasChildNodes then
      ExtractAttributes(node, s, aName, aValue);
    node := node.NextSibling;
  end;
end;
Freundliche Grüße


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 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 by Thomas Breitkreuz