08. maj 2003 - 04:31Der 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????
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?
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.
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.
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.
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.
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.
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 ?
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..
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.
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...
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!
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.
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
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
Synes godt om
Ny brugerNybegynder
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.