Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi XML auslesen!? (https://www.delphipraxis.net/3596-xml-auslesen.html)

f.r.e.s.h.d 20. Mär 2003 13:53


XML auslesen!?
 
Wie lese ich einen Eintrag in einer XML-Datei aus.

Z.B.:

<rpt:Name><rpt:VorName>MeinenNamen</rpt:VorName></rpt:Name>

Wie lese ich hier z.B. MeinenNamen aus???

Mirilin 20. Mär 2003 19:37

Delphi-Quellcode:
function TMainForm.ExtractName(aInputString: String): String;
const
  name_start = '<rpt:VorName>';
  name_end  = '</rpt:VorName>';
var
  i_start, i_end : Integer;
begin
  Result := '';
  i_start := Pos(name_start,aInputString);
  if i_start > 0 then
  begin
    i_start := i_Start+length(name_start);
    i_end := Pos(name_end,aInputString);
    if i_end > i_start then
    begin
      Result := copy(aInputString,i_start,i_end-i_start);
    end;
  end;
end;

procedure TMainForm.ButtonAuslesenClick(Sender: TObject);
begin
  LabelOut.Caption := ExtractName(EditIn.Text);
end;
so etwa in der Art...

Luckie 20. Mär 2003 19:58

Ui. Dann kann er ja gleich Textdateien nehmen. Für XML-Dateien gibt es Komponenten. Sind, glaube ich, bei den höheren Delphi-Versionen auch dabei oder so.

Mirilin 20. Mär 2003 20:02

@Luckie : Ui?
Ist doch (Plus-Minus) eine schöne Funktion! :D

Komponenten findest Du wohl hier wenn Du sie nicht hast

MathiasSimmack 20. Mär 2003 20:25

Nein, das ist keine schöne Funktion. Ich würde ebenfalls die Komponenten (ab Delphi 6) bzw. die MS-XML-Typbibliothek (für Delphi bis 5) vorschlagen. Mit denen lässt sich eindeutig einfacher arbeiten.

Beispiele für XML gibt´s hier genug.

Hansa 21. Mär 2003 03:30

Zitat:

Zitat von Luckie
Dann kann er ja gleich Textdateien nehmen...

Jetzt muß ich doch mal dumm nachhaken : Worin besteht der Unterschied von XML-Dateien zu einer Textdatei ? Ist da irgendwo doch was binär codiert?

Luckie 21. Mär 2003 03:39

Ist auch nur ASCII-Text aber mit einem bestimmten Format. Vergleichbar mie HTML, aber doch auch wiede rganz anders. Kuck dir mal eine XML-Datei mit Notepad an.

Hansa 21. Mär 2003 03:58

Ansonsten hätte ich auch mein XML-Programm verschrotten können. :mrgreen: Da stellt sich noch die Frage, wofür Komponenten ? Einen Text wird man doch noch selber bearbeiten können ?

MathiasSimmack 21. Mär 2003 08:15

@Luckie: Ein bestimmtes Format gibt es bei XML nicht. Eher im Gegenteil, du hast die Freiheit, dir eigene Tags auszudenken. Das einzige, was wichtig ist: das XML-Dokument muss "well formed" (wohlgeformt) sein.

@Hansa: Ein XML-Dokument muss aber nun nicht zwangsläufig so aussehen:
Code:
<rpt:Name><rpt:VorName>MeinenNamen</rpt:VorName></rpt:Name>
Es wäre ebenso möglich, dies auf mehrere Zeilen auszudehnen:
Code:
<rpt:Name>
  <rpt:VorName>
    MeinenNamen
  </rpt:VorName>
</rpt:Name>
Willst du die XML-Datei mit normalen Befehlen (AssignFile, ReadLn, usw.) bearbeiten, dann musst du das berücksichtigen. Die Idee von Mirilin würde hier nicht mehr korrekt arbeiten, würde man die XML-Datei zeilenweise mit ReadLn auslesen.

Mit einem XML-Parser ist es unwichtig, ob Zeilenumbrüche vorhanden sind oder nicht. Und man kommt auch relativ schnell an die gesuchten Infos ran:
Delphi-Quellcode:
xmldoc := CoDOMDocument.Create;
if(xmldoc <> nil) then begin
  // ggf. Parser-Anweisungen
  // sozusagen "do's and dont's" :o)
  { ... }

  if(xmldoc.loadXML('Dateiname')) then begin
    node := xmldoc.selectSingleNode('<rpt:Name>/<rpt:VorName>');
    ShowMessage(node.xml);
  end;
end;
(ohne Gewähr, weil: aus´m Kopf)

Ähnlich einfach ließe sich die Datei bzw. das geladene Dokument nun erweitern, der Name könnte geändert werden, usw. - und dann kann das geänderte Dokument neu gespeichert werden.

Touchdown 21. Mär 2003 15:15

Eine XMl-Komponente wird intern sicherlich Stringverarbeitung machen, nur braucht man sich nicht darum zu kümmern und kann die Vorteile dieser Komponenten nutzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 Uhr.
Seite 1 von 2  1 2      

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