Avatar billede kragekjaer Praktikant
08. maj 2003 - 04:31 Der er 22 kommentarer og
1 løsning

generere XML

Hejsa,

JEg ved ingenting om notes, så det kan være jeg spørger meget dumt:

Jeg kender en virksomhed som kører notes, og jeg skal på en eller anden måde få et script til at generere en xml-fil som bliver gemt på webserveren. Det er nemt nok med ASP, men hvad med Notes????
Avatar billede wise Seniormester
08. maj 2003 - 08:58 #1
Det burde være ligetil, da de nyere udgaver direkte understøtter XML, jeg har bare endnu ikke selv prøvet det...

/Lasse
Avatar billede jogii Nybegynder
08. maj 2003 - 09:02 #2
Den nemmeste måde er at kode en oversigt (view) til at formatere data som XML og indlejre oversigten i en side (page)eller formular. En oversigt i Notes kan vist nok bedst sammenlignes med blanding af en tabel og en rapport i Access. Ved at åbne oversigten|siden|formularen med en browser (eller et andet XML-værktøj) via http: kan du hente disse data.

En anden mulighed er at kode en agent i Lotus Script (minder om VBA). Her gennemtrævler agenten Notes-data og skriver data enten til en fil eller til en HTTP-stream (hvis den blev aktiveret via http).

Men der er nogle ting omkring sikkerheden der skal afklares først:
Er det en intranet- eller internetserver?
Hvem må hente data?
Hvor tid skal data hentes?
Adhoc eller scheduleret?

//Jörg
Avatar billede wise Seniormester
08. maj 2003 - 10:37 #3
En søgning på DXL (Domino XML) i admin help giver bl.a. denne

OM DXLExporter
Use CreateDXLExporter in NotesSession to create a NotesDXLExporter object. If you do not specify the input parameter, use SetInput to specify the input Domino data. If you do not specify the output parameter, use SetOutput to specify the output DXL data. You can also use these methods to override the CreateDXLExporter parameters.

Eksempel
This agent generates DXL from the current database.
Sub Initialize
  Dim session As New NotesSession
  Dim db As NotesDatabase
  Set db = session.CurrentDatabase
 
  REM Open xml file named after current database
  Dim stream As NotesStream
  Set stream = session.CreateStream
  filename$ = "c:\dxl\" & Left(db.FileName, Len(db.FileName) - 3) & "dxl"
  If Not stream.Open(filename$) Then
    Messagebox "Cannot open " & filename$,, "Error"
    Exit Sub
  End If
  Call stream.Truncate
 
  REM Export current database as DXL
  Dim exporter As NotesDXLExporter
  Set exporter = session.CreateDXLExporter
  Call exporter.SetInput(db)
  Call exporter.SetOutput(stream)
  Call exporter.Process
End Sub
The file generated by this code can be imported using the code specified in Example 1 of the NotesDXLImporter class.
Avatar billede jogii Nybegynder
08. maj 2003 - 12:52 #4
Hej Lasse
Jeg har lige set de indbyggede metoder igennem. Umiddelbart ser det ud som om de primært anvendes til at eksportere data (og design) i DXL format, som er en Domino version af XML. Dvs. at data skal efterbehandles. Hvis man fra starten vil have data ud i et andet format skal det gøres manuelt.

Men koden foroven siges at være meget god til programmatisk manipulation af designet af Notesdatabaser :) Eksporter designet af en database, lav ændringer i XML og importer den tilbage: så er det nemt at lave specialversioner af standardprodukter på stribe.
Avatar billede kragekjaer Praktikant
08. maj 2003 - 12:54 #5
Hej igen,

JEg tror wise har fat i noet af det rigtige.....uden at vide det. Det skal bruges på en internetserver. På en side er der noget Flash, flash henter xml-filen. Brugeren ændrer i xml´en og gemmer den fra flashen. Det er selve denne gemme-procedure som jeg skal lave.

Jeg har lavet denne procedure på en NT-server med ASP, som bliver kaldt af flashen. Altså ved tryk på en knap i flashen, kaldes et ASP-script som generer XML´en og gemmer/erstatter den "gamle" XML-fil på internetserveren.
Avatar billede jogii Nybegynder
08. maj 2003 - 12:57 #6
Hvordan kommer data fra klienten over til serveren? Hvordan ser ASP-koden ud som ligger i "knappen"?
Hvor kommer den oprindelige XML-fil fra?
Avatar billede kragekjaer Praktikant
08. maj 2003 - 13:12 #7
Den oprindelige xml-fil ligger i forvejen på serveren. Når en bruger åbner siden med flashen i, hentes xml´en ind i flashen ved et kald.

Men når han skal ud og trykker GEM, kaldes et ASP-script, som ser sådan ud:

<%
Dim strLinea, FileObject, Instream, totDiscussioni, intTipo, OutStream
newname =Request("output")
Set FileObject = Server.CreateObject("Scripting.FileSystemObject")
nomeFile = "pages.xml"
strFile = Server.MapPath(nomeFile)
Set OutStream = FileObject.CreateTextFile(strFile, true)
OutStream.Write(newname)
OutStream.Close
Set OutStream = Nothing
Set FileObject = Nothing
Response.Write("_level0.tip.scroller.output=pages.xml er nu gemt!")
%>
Avatar billede wise Seniormester
08. maj 2003 - 13:17 #8
Jeg lukker og lytter  ;-)
Er endnu ikke kommet så meget ind i XML og brugen af denne som jeg gerne ville. (I og udenfor Domino)
Avatar billede kragekjaer Praktikant
08. maj 2003 - 13:58 #9
Er der slet ingen der ved det?
Avatar billede kragekjaer Praktikant
08. maj 2003 - 14:10 #10
Det er jo ikke så meget XML at spørgsmålet går ud på, men hvordan man skriver i og gemmer en fil på webserveren. Det kunen i og for sig bare være en .txt fil der skulel skrives i og gemmes.
Avatar billede jogii Nybegynder
08. maj 2003 - 20:28 #11
Nemlig, og det er desværre ikke superlet på Domino. IIS har den fordel at den er meget filorienteret og at brugerne har ret til at operere på operativsystemnivea ("Scripting.FileSystemObject"). Det er ubetinget fy i Dominoverdenen. Objekter placeres i dokumenter, som kræver at man har forfatterrettigheder. Jeg skal lige undersøge om det overhovedet er muligt at gøre noget lignende.

Er der noget kode knyttet til knappen i Flash?
Avatar billede kragekjaer Praktikant
08. maj 2003 - 20:55 #12
nej, ved tryk på knappen sendes data fra flashen via POST til det ASP script jeg skrev ovenfor.
Avatar billede mmmtm Nybegynder
08. maj 2003 - 22:28 #13
Jeg er lige med på en lytter, samt et hurtigt skud fra hoften (kender intet til ASP/XLM).
Hvis det handler om at gemme/opdatere samt læse en txt.fil kunne det måske løses ved at oprette en mail-in database i notes, der modtager txt.fil og via en agent overskriver den gamle (jeg formoder at ASP kan generere en mail). Så kan der i flash (og andre), refereres til denne fil ?
Avatar billede kragekjaer Praktikant
08. maj 2003 - 22:34 #14
ja, måske, hvad ved jeg....ASP kan vel ikke køre der hvor Notes kører!!? Det hele skal ligge på samme server....
Avatar billede mmmtm Nybegynder
08. maj 2003 - 22:51 #15
Du skriver: "På en side er der noget Flash, flash henter xml-filen. Brugeren ændrer i xml´en og gemmer den fra flashen. Det er selve denne gemme-procedure som jeg skal lave"...
Hvis Flash kan sende en mail (altså som en form send uden brugeraktivitet?)til en mail-in database, kan Notes overskrive den eksisterende txt.fil med indholdet af den mail der modtages - som så er den Flash henter indholdet fra..
Avatar billede kragekjaer Praktikant
08. maj 2003 - 23:00 #16
Flash kan ikke sende en mail, der skal man bruge et serverside-script som ASP. Flash kan sagtens hente data fra en XML-fil på web-serveren, men kan ikke gemme det på serveren.

Men du skal ikke tænke på flash, bare tænkt det som en form send i html; kan det lade sig gøre at sende data fra en form og generere en XML-fil på webserveren ud fra de data der kommer fra formen.
Avatar billede mmmtm Nybegynder
08. maj 2003 - 23:16 #17
Som sagt kender jeg ikke meget til xlm.
Men hvis du kan sætte regler op, så data1 fra formen ="xlmoutput1", data2 ="xlmoutput2" og så fremdeles, så kan det genereres via Notes.
Men det er vist samme model som jogii/Jörg's...
Avatar billede kragekjaer Praktikant
08. maj 2003 - 23:33 #18
Hej igen,

xml er bare tekst, og det der skal sendes er også bare tekst.

Men hvis den virksomhed jeg skal lave det for kører Notes, mon ikke så de kan finde ud af det!?
Avatar billede mmmtm Nybegynder
08. maj 2003 - 23:49 #19
Provo :-) (laver ikke andet end at udvikle til web i Notes - er bare ikke nået til xlm endnu, men html, javascript mm. er rimelig ligetil at generere i Notes).
Hvis det bare handler om tekst mener jeg ikke at det er noget problem, men jeg tror at vi snakker forbi hinanden (?). Beskriv evt. mere specifikt hvad brugeren gør - fremfor det programmeringsmæssige. Problemstillingen gør mig nysgerrig!
Avatar billede kragekjaer Praktikant
09. maj 2003 - 00:29 #20
nejnej, det var ikke sådan ment.

Brugeren hiver nogle data(xml-fil)(xml-fil er bare en .txt-fil med en anden extension(.xml)) frem på sin skrærm, og ændrer i dem. Trykker derefter Send, og den xml-fil han fik først bliver nu overskrevet på serveren.
Avatar billede jogii Nybegynder
09. maj 2003 - 01:59 #21
Hvis det er en rå Submit der udføres så er det jo ikke så svært. Normalt når der udføres en Post mod en Domino server oprettes eller opdateres et dokument.
Så under normale omstændigheder ville der blive oprettet et dokument i en datbase som indeholder din XML-fil som et attachment. Hvis man griber det rigtigt an går jeg ud fra man kunne gøre følgende:
Et dokument i en database indeholder en XML-fil, som kan hentes f.eks. med
http://server/database/dummyoversigt/<DocUNID>/$file/data.xml?OpenElement

Ved at forme din Post på en passende måde kan du få lov til at "overskrive" dette dokument og på denne måde opdatere data.xml.
Hvis du vil se hvordan en Post til Domino skal se ud kan du prøve at åbne selve det dokument hvor XML-filen ligger med
http://server/database/dummyoversigt/<DocUNID>?EditDocument
og anvende view source.
Du skal selvfølgelig have rettigheder for at skrive mod et dokument.

Har du behov for at gemme filerne på filsystemet?
Alternativt kan du poste mod en agent, som henter data ud og behandler disse. I virkeligheden er agenter i Domino det der allermest minder om ASP-filer.
//Jörg
Avatar billede kragekjaer Praktikant
09. maj 2003 - 11:12 #22
Ok, mange tak for hjælpen....prøver det af, og nu ved jeg da at det kan lade sig gøre.
Avatar billede zoomtek Nybegynder
09. august 2003 - 20:43 #23
XML kan trækkes ud af Domino på et væld af måder. Kender du et view, hvor dine data bliver præsenteret kan du skrive:

http://www.website.dk/database.nsf/viewnavn?readviewentries

readviewentries overfører et view til XML-kode, der så kan importeres med DOM. Jeg har dansk materiale. Kontakt mig evt. på soren@zoomtek.dk
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester