![]() |
Delphi-Version: 10.1 Berlin
XML Endtag finden
Hallo Zusammen,
Weiß jemand, ob es mit irgendeiner Funktion möglich ist den allerletzten Tag einer XML-Datei zu finden und vor diesen einen XML-Eintrag zu erstellen? Ich hoffe meine Frage ist konkret genug formuliert. :-D Über jeden Hinweis würde ich mich riesig freuen. |
AW: XML Endtag finden
Vielleicht so:
Delphi-Quellcode:
const
FileName = 'MyXmlFile.xml'; var N: Integer; S: string; begin S := TFile.ReadAllText(FileName); N := S.LastIndexOf('</'); if N >= 0 then begin TFile.WriteAllText(FileName, S.Insert(N, '<MyTag>MyValue</MyTag>')); end; end; |
AW: XML Endtag finden
Vielen Dank schonmal für Ihre Antwort! :wink:
Vielleicht verdeutlicht eine Beispiels XML-Datei nocheinmal mein Problem.
Code:
Ich weiß allerdings nicht, wie ich nur in den letzten Test-Tag etwas reinschreiben kann
<test>
//Anderer Code </test> <test> //Anderer Code </test> <test> //Hier soll der entsprechende Code hinzugefügt werden </test> |
AW: XML Endtag finden
Etwas erweitert:
Delphi-Quellcode:
const
FileName = 'MyXmlFile.xml'; var N, N2: Integer; S: string; begin S := TFile.ReadAllText(FileName); N := S.LastIndexOf('</'); if N >= 0 then begin N2 := S.IndexOf( '>', N)+1; TFile.WriteAllText(FileName, S.Insert(N2, '<MyTag>MyValue</MyTag>')); end; end; |
AW: XML Endtag finden
Zitat:
Code:
<test>
//Anderer Code </test> <test> //Anderer Code </test> <test> //Hier soll der entsprechende Code hinzugefügt werden <MyTag>MyValue</MyTag></test> Zitat:
|
AW: XML Endtag finden
Liste der Anhänge anzeigen (Anzahl: 1)
Ich will ja nichts schlechtreden, aber textbasiert XML bearbeiten finde ich etwas fahrlässig. Vor allem wenn das in Delphi doch so einfach geht:
Delphi-Quellcode:
implementation
uses XmlIntf, XmlDoc; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var xmlDoc: IXMLDocument; lastNode: IXMLNode; begin xmlDoc := LoadXMLData(Memo1.Text); lastNode := xmlDoc.DocumentElement.ChildNodes.Last(); // Mach was mit lastNode... lastNode.AddChild('thisIsANewNode'); Memo2.Text := xmlDoc.XML.Text; end; |
AW: XML Endtag finden
Danke nochmal für eure Antworten, das hat mir auf jeden Fall schonmal weitergeholfen!:)
Allerdings hab ich soeben bemerkt, dass der Fehler schon woanders liegt und zwar im Laden der Datei.
Code:
Dort haut er mir bereits einen Fehler raus, da die Struktur der XML-Datei folgendermaßen aussieht und ich diese auch nicht verändern kann.XMLDocument1.LoadFromFile(FILEPATH);
Code:
Die Datei, die geladen wird hat keinen übergeordneten Knotenpunkt und diese Datei liegt so auf einem Server vor. Wenn allerdings ein übergeordneter Knoten vorhanden ist, dann funktioniert alles einwandfrei.<?xml version="1.0" encoding="utf-8"?> <Beispiel> </Beispiel> <Beispiel> </Beispiel> Ich schätze da lässt sich nicht viel machen, korrekt? |
AW: XML Endtag finden
Wenn man kein gültiges XML hat kann man auch keinen XML-Parser bemühen :(
|
AW: XML Endtag finden
Zitat:
Bin noch ganz neu in der Delphi-Programmierung. Wie sieht das denn aus, wenn man, wie die Vorgänger bereits erwähnten, die Datei stumpf als Textdatei ausliest, dann den entsprechenden Teil einfügt und schließlich als XML-Datei abspeichert? |
AW: XML Endtag finden
Bin mal naiv:
Datei in 'ne Stringliste laden und ein bisserl anpassen, ungefähr sinngemäß sowas:
Delphi-Quellcode:
Sinnvoller wäre es, beim "Lieferanten" die Erstellung einer syntaktisch korrekten Datei einzufordern.
var
sl : TStringList; begin sl := TStringList.Create; sl.LoadFromFile(FILEPATH); sl.Insert(1,'<reparaturtag>'); sl.Add('</reparaturtag>'); sl.SaveToFile(FILEPATH); sl.Free; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:52 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