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
