Einzelnen Beitrag anzeigen

Bernd63

Registriert seit: 14. Mai 2007
3 Beiträge
 
#1

[OpenXML] Wie kann ich eine DTD einbinden?

  Alt 15. Mai 2007, 20:21
Hallo,

mein erstes XML-Projekt macht mir sorgen . Ich habe mich für OpenXML 3.2 entschieden, da ich keine MS Abhängigkeiten mag. Leider habe ich nur das mitgelieferte manual.xml als Doku. Die Tutorials auf http://www.philo.de/xml/ sind hoffnungslos veraltet.

Ich möchte ein mit den Open Source Grafikprogramm Inkscape erzeugte SVG-Datei einlesen. Die darin enthaltenen 'rect'-Tags mit meinen Programm manipulieren und danach wieder abspeichern. Die 'rect'-Tags ermittle ich mit GetElementsByTagName und hole mir die ID's nach RList vom Typ TStringList. Soweit so gut. Nun möchte ich mit GetElementById mir ein rect per id holen. Die Funktion liefert aber immer nil. Habe bereits herausgefunden das es daran liegt, dass keine DTD vorhanden ist. Doch wie bekomme ich die in den ValidationAgent rein? Kann mich mal einer von euch Profis mit der Nase drauf stupsen?

Code:
var
  SVGDoc: TDOMDocument;
  List: TDomNodeList;
  AttribNode: TDomNode;
  Element : TDomElement;
  i: Integer;
  RList: TStringList;
begin
  SVGDoc := XmlToDomParser1.FileToDom(SVGFileName);
  SVGDoc.ValidationAgent.ValidateDocument(erExpand);
  RList := SVGDoc.DocumentElement.GetElementsByTagName('rect');

  ...
  Element := SvgDoc.GetElementById(RList[i]);

end;
  Mit Zitat antworten Zitat