Da brauchst Du kein XML-Parser oder sowas für- bin ich der Meinung...
I second that a lot.
Es ist eben gerade nicht professioneller etwas umständlicheres zu nehmen.
Am Ende des Tages gehts eigentlich meist darum, dass man
a) Datenstrukturen aus deinem Programm zu xml machst (XML-Serialisierung).
b) XML zu Datenstrukturen für dein Programm machst (XML-De-Serialisierung).
Für a) ist die direkte Konkenatierung als String in vielen Fällen eine effiziente Möglichkeit. So stehts auch beim true xml intelectual Elliotte Rusty Harold (http://www.cafeconleche.org/)
Die XML-DOM Api ist - find nicht nur ich - ziemlich aufwendig. Würd mich auf jeden Fall auch mal mit der SAX-API beschäftigen (mit der kann man aber nur b) machen. Für a) wie gesagt: String Konkenatierung. Damit hab ich schon komplexe SOAP konforme XML Files zusammengekleistert und dem SAP Server ist es auch egal.
Heute gibts viel effektivere XML-Apis. Zum Beispiel für in Notes nutzbareres Java.
Unterstützt bitte mein Lobbying für XPath in Lotus Script:
http://ideajam.net/IdeaJam/P/ij.nsf/0/7F9DF9E5304E3AD08625738A00651D8B?OpenDocument
Ich mach sowas mit Java, aber mit eigenen LotusScript Structs oder Klassen kannst du das effizienter machen.
class Tag
private tagName as String
private tagTextNode As String
private childNodes as Variant '(ein Array aus Tag-Objekten)
private attrNames as Variant ' (ein Array aus attribut-Namen als String array. Hat genauso viele Elemente wie attrValues
private attrValues as Variant ' (ein Array aus attribut-Werten als String array. Hat genauso viele Elemente wie attrNames
public new (tagName as String, tagTextNode as String)
' musst du selbst machen
end new
public sub addAttr(name as String, value as String)
' musst du selbst machen
end sub
public sub addChildTag(Variant tag)
'musst du selbst machen
end sub
public sub addChildTags(Variant array_of_tags)
'musst du selbst machen
end sub
public function toXml() as String
' musst du selbst machen
end function
end class
Gruß Axel
Wieso.
Als Code, der die Klasse nutzt sowas wie:
Dim tagColumnHeader as Tag
Dim tagColumn As Tag
tagColumn = new Tag("column", "")
tagColum.addAttribute("itemname", mstrItemName)
tagColum.addAttribute("width", mstrWidth)
[...]
tagColumn.addChildTag(tagColumnHeader)
Mit so etwas bekommst du code hin, der wiederverwendbareren und übersichtlicheren XML-Generier-Code erzeugt.
Gruß Axel