![]() |
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??? |
Delphi-Quellcode:
so etwa in der Art...
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; |
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.
|
@Luckie : Ui?
Ist doch (Plus-Minus) eine schöne Funktion! :D ![]() |
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. |
Zitat:
|
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.
|
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 ?
|
@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:
Es wäre ebenso möglich, dies auf mehrere Zeilen auszudehnen:
<rpt:Name><rpt:VorName>MeinenNamen</rpt:VorName></rpt:Name>
Code:
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.
<rpt:Name>
<rpt:VorName> MeinenNamen </rpt:VorName> </rpt:Name> 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:
(ohne Gewähr, weil: aus´m Kopf)
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; Ä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. |
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. |
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