std.svg.parser

SVG-Reader: vorhandene .svg-Dateien öffnen, DOM traversieren, Elemente nach Tag-Name oder ID suchen, Attributwerte auslesen. Schreibzugriff ist nicht vorgesehen — der Parser dient ausschließlich zum Einlesen und Auswerten.

std.svg · std.svg.builder · std.svg.xml


Verwendung

import std.svg.parser;

// Datei öffnen
var doc: SvgDoc := SvgOpen("input.svg");

// Wurzel-Element (SVG-Element selbst)
var root: SvgNode := SvgDocRoot(doc);

// Breite und Höhe des Dokuments
var w: f64 := SvgDocWidth(doc);
var h: f64 := SvgDocHeight(doc);

// Erstes Kind-Element
var child: SvgNode := SvgNodeFirstChild(root);
while (child != nil) {
    var tag: pchar := SvgNodeTag(child);
    var id: pchar := SvgAttrStr(child, "id");
    var fill: pchar := SvgAttrStr(child, "fill");
    child := SvgNodeNext(child);
}

// Element per ID suchen
var logo: SvgNode := SvgFindById(doc, "logo");
if (logo != nil) {
    var cx: f64 := SvgAttrF64(logo, "cx");
    var cy: f64 := SvgAttrF64(logo, "cy");
}

// Alle Elemente eines Tags sammeln
var circles: SvgNodeList := SvgFindByTag(doc, "circle");
var i: int64 := 0;
while (i < SvgNodeListLen(circles)) {
    var node: SvgNode := SvgNodeListGet(circles, i);
    var r: f64 := SvgAttrF64(node, "r");
    i := i + 1;
}
SvgNodeListFree(circles);

// Aufräumen
SvgClose(doc);


Typen

Typ Beschreibung
SvgDoc Handle auf geöffnetes SVG-Dokument
SvgNode Handle auf DOM-Knoten (Element, Textknoten)
SvgNodeList Dynamische Liste von SvgNode-Handles

Funktionen

Signatur Sichtbarkeit Beschreibung
SvgOpen(path: pchar): SvgDoc pub Öffnet SVG-Datei und parst DOM
SvgClose(doc: SvgDoc): void pub Gibt Dokument-Ressourcen frei
SvgDocRoot(doc: SvgDoc): SvgNode pub Gibt das Wurzel-<svg>-Element zurück
SvgDocWidth(doc: SvgDoc): f64 pub Gibt Dokument-Breite aus width-Attribut
SvgDocHeight(doc: SvgDoc): f64 pub Gibt Dokument-Höhe aus height-Attribut
SvgNodeTag(node: SvgNode): pchar pub Gibt Tag-Name des Elements (z.B. „circle“, „rect“)
SvgNodeText(node: SvgNode): pchar pub Gibt Textinhalt eines Text-Knotens
SvgNodeFirstChild(node: SvgNode): SvgNode pub Erstes Kind-Element (nil wenn keines)
SvgNodeNext(node: SvgNode): SvgNode pub Nächstes Geschwister-Element (nil wenn letztes)
SvgNodeParent(node: SvgNode): SvgNode pub Eltern-Element
SvgAttrStr(node: SvgNode, attr: pchar): pchar pub Attributwert als String (leer wenn nicht vorhanden)
SvgAttrF64(node: SvgNode, attr: pchar): f64 pub Attributwert als f64 (0.0 wenn nicht vorhanden)
SvgAttrInt(node: SvgNode, attr: pchar): int64 pub Attributwert als int64
SvgAttrExists(node: SvgNode, attr: pchar): bool pub Prüft ob Attribut vorhanden
SvgFindById(doc: SvgDoc, id: pchar): SvgNode pub Sucht Element mit gegebener id (nil wenn nicht gefunden)
SvgFindByTag(doc: SvgDoc, tag: pchar): SvgNodeList pub Gibt alle Elemente mit gegebenem Tag-Namen zurück
SvgNodeListLen(list: SvgNodeList): int64 pub Anzahl Elemente in der Liste
SvgNodeListGet(list: SvgNodeList, i: int64): SvgNode pub Element an Index i
SvgNodeListFree(list: SvgNodeList): void pub Gibt Listen-Ressourcen frei

Letzte Aktualisierung: 2026-05-23