Autor Thema: XML von Grund auf mit Lotusscript erstellen  (Gelesen 11599 mal)

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
XML von Grund auf mit Lotusscript erstellen
« am: 13.11.07 - 13:37:42 »
Hi zusammen

Möchte mir ein XML von Grund auf bauen. Geht natürlich über eine einfache String Variable wo ich alles zusammenbastel. Meine Frage dazu, weiss jemand ob und wie man eine XML auch "professioneller" mit irgendeiner Notesklasse aufbauen kann. Falls geht ein winziger Beispielcode wäre super.

Gruss
Remo
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

botschi

  • Gast
Re: XML von Grund auf mit Lotusscript erstellen
« Antwort #1 am: 13.11.07 - 13:49:51 »
Fängt mit der "NotesDOMParser class" an, geht dann zur "NotesDOMDocumentNode class" usw. Die Designer-Hilfe hilft Dir weiter, incl Beispielen.

Matthias

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Re: XML von Grund auf mit Lotusscript erstellen
« Antwort #2 am: 13.11.07 - 13:56:06 »
Hi Matthias

Danke für die Antwort. Nur wenn ich von mir so leer erstelle und dann versuche das zu parsen (nehme an sowas muss ich machen) wie komme ich am Schluss zu einer XML in einer String Variable. Da hänge ich etwas. Weiss da irgendwie nicht was genau machen. Hilfe habe ich eigentlich schon gesucht (wohl nach dem falschen). Nur richtig schlau werd ich da leider auch nicht.

Gruss
Remo
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

botschi

  • Gast
Re: XML von Grund auf mit Lotusscript erstellen
« Antwort #3 am: 13.11.07 - 14:01:52 »
Das hier http://atnotes.de/index.php?topic=28759.0 unter #3 bringt Dir vielleicht ein wenig.
So ganz fertigen Code für Dein Anliegen wirst Du hier nicht finden...

Wenn Du noch nie etwas mit XML gemacht hast, wird es vielleicht etwas hakelig am Anfang. Einfach debuggen und lernen...

Auf konkrete Fragen gibts konkrete Antworten  ;D

Matthias

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Re: XML von Grund auf mit Lotusscript erstellen
« Antwort #4 am: 13.11.07 - 14:26:09 »
Hi Matthias

Hier mal ein Beispielcode.

Sub Initialize
   Dim session As NotesSession
   Dim DOMParser As NotesDOMParser
   Dim DOMDoc As NotesDOMDocumentNode
   Dim DOMNode As NotesDOMNode
   Dim DOMNode2 As NotesDOMNode
   Dim strXML As String
   Dim stream As NotesStream
   
   Set session=New NotesSession
   Set stream=session.CreateStream   
   Set DOMParser=session.CreateDOMParser("",stream)
   Set DOMDoc=DOMParser.Document.CreateDocumentNode
   
   Set DOMNode=DOMDoc.CreateElementNode("view")
   
   Set DOMNode2=DOMDoc.CreateElementNode("actionbar")
   DOMNode.AppendChild DOMNode2
   
   DOMParser.Serialize
   
   strXML=stream.ReadText
   
   Msgbox strXML,,"XML"
End Sub

Raus kommen sollte so was.

<view>
<actionbar>
</actionbar>
</view>

Will mir danach damit eine Ansicht aufbauen (was wenn ich in Stringvariable reinschreibe auch schon klappt, nur echt nicht elegant ist).

Gruss
Remo


Nachtrag:
So wird ein Schuh draus...  :)

Sub Initialize
   Dim session As NotesSession
   Dim DOMParser As NotesDOMParser
   Dim DOMDoc As NotesDOMDocumentNode
   Dim DOMNode As NotesDOMNode
   Dim DOMNode2 As NotesDOMNode
   Dim strXML As String
   Dim stream As NotesStream
   
   Set session=New NotesSession
   Set stream=session.CreateStream   
   Set DOMParser=session.CreateDOMParser("",stream)
   Set DOMDoc=DOMParser.Document
   
   Set DOMNode=DOMDoc.CreateElementNode("view")
   Set DOMNode2=DOMDoc.CreateElementNode("actionbar")
   
   DOMDoc.AppendChild DOMNode
   DOMNode.AppendChild DOMNode2
   
   DOMParser.Serialize
   
   strXML=stream.ReadText
   
   Msgbox strXML,,"XML"
End Sub

Raus kommt:
<view><actionbar/></view>
« Letzte Änderung: 25.11.10 - 15:26:46 von Fedaykin »
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

botschi

  • Gast
Re: XML von Grund auf mit Lotusscript erstellen
« Antwort #5 am: 13.11.07 - 14:30:46 »
Ja, das geht auch. Du musst halt jeden Knotenpunkt selber setzen. Der Debugger wird Dich die nächsten Tage begleiten...

Das wird kein Spaß, wenn Du damit noch nicht viel gemacht hast.

Aus was willst Du das XML denn erstellen? Also was ist Deine Quelle? Ne ganze DB? Man kann sich aus dem Designer heraus eine ganze DB als XML ausgeben lassen, aber frag mich nicht mehr wie und wo...


Matthias

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Re: XML von Grund auf mit Lotusscript erstellen
« Antwort #6 am: 13.11.07 - 14:39:14 »
Hallo Matthias

Eben geht es leider im Moment noch nicht und weiss nicht wie machen. Und glaub mir die meisten Propertys von einer View rauszufummeln wird auch nicht zu Deinen Hobbies gehören. Aber kenne jemanden der schon sowas gemacht hat.  ;D Kann hier aber keine Datei reinhängen und glaub mir die Scriptlib ist nicht gerade winzig. (Klasse für View, Actionbar, ActionButtonStyle, Column, Action).


Gruss
Remo
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Re: XML von Grund auf mit Lotusscript erstellen
« Antwort #7 am: 13.11.07 - 14:41:41 »
Diese ruf ich dann so auf.

Sub Initialize
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim objMyColumn As MyColumn
   Dim objMyView As MyView
   Dim objMyAction As MyAction
   
   Set db=session.CurrentDatabase
   
   Set objMyView=New MyView
   objMyView.ViewName="MyView"
   objMyView.ViewAlias="vwMyView"
   objMyView.ViewComment="Kommentar"
   objMyView.RowSpacing=1.5
   objMyView.BGColor="red"
   objMyView.HeaderBGColor="blue"
   objMyView.GridColor="green"
   objMyView.HeaderlineCount=2
   objMyView.RowlineCount=9
   objMyView.ShrinkRows=True
   objMyView.GridStyle=3
   objMyView.Headers=2
   objMyView.AltRowColor="yellow"
   objMyView.ExtendLastColumn=True
   objMyView.colorizeicons=True
   objMyView.unreadcolor="green"
   objMyView.totalscolor="red"
   objMyView.boldunreadrows=True
   objMyView.colorizeicons=True
   objMyView.allowcustomizations=True
   objMyView.hidemarginborder=True
   objMyView.transparentunreadrows=True
   objMyView.marginwidth="1px"
   objMyView.marginbgcolor="purple"
   objMyView.noemptycategories=True
   objMyView.showmargin=True
   
   Set objMyColumn=New MyColumn
   objMyColumn.ColumnHeader.Title="Erstellt"   
   objMyColumn.Categorized=False
   objMyColumn.Sort=2
   objMyColumn.ReSort=3
   objMyColumn.Formula="@Created"
   
   Set objMyAction=New MyAction
   objMyAction.Title="Erstellen"
   objMyAction.Click="@Command([Compose])"
   
   objMyView.AddColumn objMyColumn
   objMyView.AddAction objMyAction
   objMyView.Create db   
End Sub

Kann nach Feierabend ScriptLib auch reinhängen.
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

botschi

  • Gast
Re: XML von Grund auf mit Lotusscript erstellen
« Antwort #8 am: 13.11.07 - 15:10:07 »
Ich habs noch nicht richtig geschnallt...

Du hast eine View als Quelle und willst Dir eine XML-Datei erstellen?
Dann kannst Du Dir doch "einfach" den String zusammenschustern und mit Zeilenumbrüchen und Einrückungen arbeiten...

Da brauchst Du kein XML-Parser oder sowas für- bin ich der Meinung...

Matthias

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Re: XML von Grund auf mit Lotusscript erstellen
« Antwort #9 am: 13.11.07 - 15:23:11 »
Hi Matthias

Also ich habe eine ScriptLib. In dieser Klassen zum erstellen einer vollwertigen Ansicht. Diese fülle ich dann mit LotusScript ab und sag bau mir Ansicht. Das funktioniert alles. Aber solcher Code

   Function XML As String
      XML={<column }
      XML=XML & {itemname="} & mstrItemName & {" }
      XML=XML & {width="} & mstrWidth & {" }
      XML=XML & {categorized="} & mstrCategorized & {" }
      XML=XML & {sort="} & mstrSort & {" }
      XML=XML & {resort="} & mstrReSort & {" }
      XML=XML & {>}
      XML=XML & ColumnHeader.XML
      XML=XML & mobjCodeValue.XML
      XML=XML & {</column>}
   End Function

ist nicht wirklich schön. Da dachte ich mir kann vielleicht ein NotesDOMDocument abfüllen und mir daraus dann XML zaubern das ich verwende um dann als neue Ansicht zu importieren. Nur irgendwie komme ich da nicht weiter. Hoffe nun alles klar.

Gruss
Remo
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

botschi

  • Gast
Re: XML von Grund auf mit Lotusscript erstellen
« Antwort #10 am: 13.11.07 - 15:25:20 »
Ja, aber da kann ich Dir nicht weiterhelfen...

Matthias

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: XML von Grund auf mit Lotusscript erstellen
« Antwort #11 am: 13.11.07 - 15:41:11 »

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.
Code
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 
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

botschi

  • Gast
Re: XML von Grund auf mit Lotusscript erstellen
« Antwort #12 am: 13.11.07 - 16:29:24 »
Ich verstehe kein Wort  ???
Aber muss ich ja auch nicht  :D

Matthias

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: XML von Grund auf mit Lotusscript erstellen
« Antwort #13 am: 13.11.07 - 16:55:57 »
Wieso.

Als Code, der die Klasse nutzt sowas wie:

Code
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
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

botschi

  • Gast
Re: XML von Grund auf mit Lotusscript erstellen
« Antwort #14 am: 13.11.07 - 16:58:44 »
Ah, alles klar.
Ich habs nicht gleich verstanden, auf was Du hinaus willst. Bei "I second that a lot" bin ich schon ausgestiegen  ;D

Matthias

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Re: XML von Grund auf mit Lotusscript erstellen
« Antwort #15 am: 14.11.07 - 14:54:49 »
Hi Axel

Vielen Dank, ist wohl echt so am besten.

Gruss
Remo
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

Offline Fedaykin

  • Aktives Mitglied
  • ***
  • Beiträge: 229
  • Geschlecht: Männlich
  • Ya Hya Chouhada!
Re: XML von Grund auf mit Lotusscript erstellen
« Antwort #16 am: 19.11.07 - 11:18:03 »
Hi zusammen

Falls jemand interessiert wie ich es denn nun gemacht habe ist hier zu finden:
http://atnotes.de/index.php?topic=38979.0

Gruss
Remo
Ich sage Euch: "Man muss noch Chaos in sich haben, um einen tanzenden Stern gebären zu können."

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz