für DIA. Kein schöner, aber einfacher XML-Writer.
DIA kriegt man hier:
http://dia-installer.sourceforge.net/download.php
War ein kleines Nebenprodukt, nach dem Laden der .DIA-Datei müssen
die Diagramme nur noch angeordnet werden. Ev. kanns ja jemand ver-
wenden.
Code: Alles auswählen
EnableExplicit
Global IDCounter.l
Procedure.s String(s.s)
ProcedureReturn ReplaceString(s, "\dq", #DQUOTE$)
EndProcedure
Procedure UMLWriteFileStart(File.l)
Protected s.s
s = String("<?xml version=\dq1.0\dq encoding=\dqUTF-8\dq?>") + #CRLF$
s + String("<dia:diagram xmlns:dia=\dqhttp://www.lysator.liu.se/~alla/dia/\dq>") + #CRLF$
s + String(" <dia:layer name=\dqHintergrund\dq visible=\dqtrue\dq>") + #CRLF$
WriteStringN(File, s, #PB_UTF8)
EndProcedure
Procedure UMLWriteFileEnd(File.l)
Protected s.s
s = String(" </dia:layer>") + #CRLF$
s + String("</dia:diagram>") + #CRLF$
WriteStringN(File, s, #PB_UTF8)
EndProcedure
Procedure.l UMLWriteClassStart(File.l, ClassName.s, Comment.s)
Protected s.s
s + String(" <dia:object type=\dqUML - Class\dq version=\dq0\dq id=\dqO" + Str(IDCounter) + "\dq>") + #CRLF$
s + String(" <dia:attribute name=\dqname\dq>") + #CRLF$
s + String(" <dia:string>#"+ClassName+"#</dia:string>") + #CRLF$
s + String(" </dia:attribute>") + #CRLF$
s + String(" <dia:attribute name=\dqcomment\dq>") + #CRLF$
s + String(" <dia:string>#"+Comment+"#</dia:string>") + #CRLF$
s + String(" </dia:attribute>") + #CRLF$
s + String(" <dia:attribute name=\dqvisible_attributes\dq>") + #CRLF$
s + String(" <dia:boolean val=\dqtrue\dq/>") + #CRLF$
s + String(" </dia:attribute>") + #CRLF$
s + String(" <dia:attribute name=\dqvisible_operations\dq>") + #CRLF$
s + String(" <dia:boolean val=\dqtrue\dq/>") + #CRLF$
s + String(" </dia:attribute>") + #CRLF$
s + String(" <dia:attribute name=\dqvisible_comments\dq>") + #CRLF$
s + String(" <dia:boolean val=\dqtrue\dq/>") + #CRLF$
s + String(" </dia:attribute>") + #CRLF$
WriteStringN(File, s, #PB_UTF8)
IDCounter + 1
ProcedureReturn IDCounter - 1
EndProcedure
Procedure UMLWriteClassEnd(File.l)
Protected s.s
s + String(" </dia:object>") + #CRLF$
WriteStringN(File, s, #PB_UTF8)
EndProcedure
Procedure UMLWriteAttributesStart(File.l)
Protected s.s
s = String(" <dia:attribute name=\dqattributes\dq>") + #CRLF$
WriteStringN(File, s, #PB_UTF8)
EndProcedure
Procedure UMLWriteAttributesEnd(File.l)
Protected s.s
s = String(" </dia:attribute>") + #CRLF$
WriteStringN(File, s, #PB_UTF8)
EndProcedure
Procedure UMLWriteAttribute(File.l, name.s, type.s, Comment.s)
Protected s.s
s = String(" <dia:composite type=\dqumlattribute\dq>") + #CRLF$
s + String(" <dia:attribute name=\dqname\dq>") + #CRLF$
s + String(" <dia:string>#"+name+"#</dia:string>") + #CRLF$
s + String(" </dia:attribute>") + #CRLF$
s + String(" <dia:attribute name=\dqtype\dq>") + #CRLF$
s + String(" <dia:string>#"+type+"#</dia:string>") + #CRLF$
s + String(" </dia:attribute>") + #CRLF$
s + String(" <dia:attribute name=\dqcomment\dq>") + #CRLF$
s + String(" <dia:string>#"+Comment+"#</dia:string>") + #CRLF$
s + String(" </dia:attribute>") + #CRLF$
s + String(" </dia:composite>") + #CRLF$
WriteStringN(File, s, #PB_UTF8)
EndProcedure
Procedure UMLWriteOperationsStart(File.l)
Protected s.s
s = String(" <dia:attribute name=\dqoperations\dq>") + #CRLF$
WriteStringN(File, s, #PB_UTF8)
EndProcedure
Procedure UMLWriteOperationsEnd(File.l)
Protected s.s
s = String(" </dia:attribute>") + #CRLF$
WriteStringN(File, s, #PB_UTF8)
EndProcedure
Procedure UMLWriteOperationStart(File.l, name.s, type.s, Comment.s)
Protected s.s
s = String(" <dia:composite type=\dqumloperation\dq>") + #CRLF$
s + String(" <dia:attribute name=\dqname\dq>") + #CRLF$
s + String(" <dia:string>#"+name+"#</dia:string>") + #CRLF$
s + String(" </dia:attribute>") + #CRLF$
s + String(" <dia:attribute name=\dqtype\dq>") + #CRLF$
s + String(" <dia:string>#"+type+"#</dia:string>") + #CRLF$
s + String(" </dia:attribute>") + #CRLF$
s + String(" <dia:attribute name=\dqcomment\dq>") + #CRLF$
s + String(" <dia:string>#"+Comment+"#</dia:string>") + #CRLF$
s + String(" </dia:attribute>") + #CRLF$
WriteStringN(File, s, #PB_UTF8)
EndProcedure
Procedure UMLWriteOperationEnd(File.l)
Protected s.s
s = String(" </dia:composite>") + #CRLF$
WriteStringN(File, s, #PB_UTF8)
EndProcedure
Procedure UMLWriteParametersStart(File.l)
Protected s.s
s = String(" <dia:attribute name=\dqparameters\dq>") + #CRLF$
WriteStringN(File, s, #PB_UTF8)
EndProcedure
Procedure UMLWriteParametersEnd(File.l)
Protected s.s
s = String(" </dia:attribute>") + #CRLF$
WriteStringN(File, s, #PB_UTF8)
EndProcedure
Procedure UMLWriteParameter(File.l, name.s, type.s, Comment.s)
Protected s.s
s = String(" <dia:composite type=\dqumlparameter\dq>") + #CRLF$
s + String(" <dia:attribute name=\dqname\dq>") + #CRLF$
s + String(" <dia:string>#"+name+"#</dia:string>") + #CRLF$
s + String(" </dia:attribute>") + #CRLF$
s + String(" <dia:attribute name=\dqtype\dq>") + #CRLF$
s + String(" <dia:string>#"+type+"#</dia:string>") + #CRLF$
s + String(" </dia:attribute>") + #CRLF$
s + String(" <dia:attribute name=\dqcomment\dq>") + #CRLF$
s + String(" <dia:string>#"+Comment+"#</dia:string>") + #CRLF$
s + String(" </dia:attribute>") + #CRLF$
s + String(" </dia:composite>") + #CRLF$
WriteStringN(File, s, #PB_UTF8)
EndProcedure
Procedure.l UMLWriteConnection(File.l, name.s, FromID.l, ToID.l)
Protected s.s
s = String(" <dia:object type=\dqUML - Generalization\dq version=\dq1\dq id=\dqO"+Str(IDCounter)+"\dq>") + #CRLF$
s + String(" <dia:attribute name=\dqname\dq>") + #CRLF$
s + String(" <dia:string>#"+name+"#</dia:string>") + #CRLF$
s + String(" </dia:attribute>") + #CRLF$
s + String(" <dia:connections>") + #CRLF$
s + String(" <dia:connection handle=\dq0\dq to=\dqO"+Str(ToID)+"\dq connection=\dq6\dq/>") + #CRLF$
s + String(" <dia:connection handle=\dq1\dq to=\dqO"+Str(FromID)+"\dq connection=\dq1\dq/>") + #CRLF$
s + String(" </dia:connections>") + #CRLF$
s + String(" </dia:object>") + #CRLF$
WriteStringN(File, s, #PB_UTF8)
IDCounter + 1
ProcedureReturn IDCounter - 1
EndProcedure
;
; If CreateFile(0, "test.dia")
; UMLWriteFileStart(0) ;>
;
; UMLWriteClassStart(0, "Klasse1", "Classcomment") ;>
; UMLWriteAttributesStart(0) ;>
; UMLWriteAttribute(0, "Var1", "long", "Attributecomment")
; UMLWriteAttributesEnd(0) ;<
;
; UMLWriteOperationsStart(0) ;>
; UMLWriteOperationStart(0, "func1", "long", "Operationcomment") ;>
; UMLWriteParametersStart(0) ;>
; UMLWriteParameter(0, "param1", "string", "Parametercomment")
; UMLWriteParametersEnd(0) ;<
; UMLWriteOperationEnd(0) ;<
; UMLWriteOperationsEnd(0) ;<
; UMLWriteClassEnd(0) ;<
;
; UMLWriteClassStart(0, "Klasse2", "") ;>
;
; UMLWriteOperationsStart(0) ;>
; UMLWriteOperationStart(0, "func1", "long", "") ;>
; UMLWriteOperationEnd(0) ;<
; UMLWriteOperationsEnd(0) ;<
; UMLWriteClassEnd(0) ;<
;
; UMLWriteClassStart(0, "Klasse3", "") ;>
;
; UMLWriteOperationsStart(0) ;>
; UMLWriteOperationStart(0, "func1", "long", "") ;>
; UMLWriteOperationEnd(0) ;<
; UMLWriteOperationsEnd(0) ;<
; UMLWriteClassEnd(0) ;<
;
; UMLWriteConnection(0, "is", 1, 0)
; UMLWriteConnection(0, "is", 1, 2)
; UMLWriteConnection(0, "is", 2, 0)
; UMLWriteFileEnd(0) ;<
;
;
;
; CloseFile(0)
; Else
; MessageRequester("Error","Couldn't create file.")
; EndIf