Guten Morgen.
Zum Arbeiten mit
XML-Dokumenten gibt es zwei Ansätze: Entweder man liest das Dokument vollständig ein und arbeitet mit einer internen Instanz (
DOM, document object model) oder, wenn das Dokument zu groß ist oder sequentiell verarbeitet werden kann, man verarbeitet es mit einem sequentiellen Parser (
SAX, Simple
API for
XML).
Ich denke du wirst für's Erste mit
DOM ganz gut fahren:
Delphi-Quellcode:
uses
XMLIntf,
XMLDoc,
XMLDom,
Variants;
var
doc: IXMLDocument;
nl: IDOMNodeList;
i, iLength: Integer;
aValue, xPath: String;
begin
fn := 'C:\test.xml';
doc := LoadXMLDcoument(fn);
xPath := '//strasse'; // finde strasse - egal auf welcher Ebene
with doc.DOMDocument as IDOMNodeSelect do
nl := SelectNodes(ePath);
for i := 0 to Pred(nl.length) do
with nl.item[i] as IDOMElement do
begin
aValue := VarToStr(getAttribute('laenge'));
if not TryStrToInt(aValue, iLength) or (iLength <> 40) then
setAttribute('laenge', '40');
end;
fn := ChangeFileExt(fn, '.out.xml');
doc.SaveToFile(fn);
end;
Getippt und nicht getestet.
Freundliche Grüße vom marabu