Van HTML formulier naar XML met Java?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • EJanus
  • Registratie: December 2013
  • Nu online
Update: Ik boek inmiddels wat vooruitgang. Hierbij de nieuwe code. Het is nog niet erg netjes dus work in progress, maar het doet wat ik wil. Ik zal de code hier af en toe bijwerken.

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
<!DOCTYPE html>
    
    <html>
    <head>
    <meta charset="utf-8">

        <title>Aanmelden</title>

        <script type="text/javascript" language="javascript">

        var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        var fso = new ActiveXObject("Scripting.FileSystemObject");  
        var FILENAME='d:\Aanmeldingen.xml';

    function SaveXMLData()
    {
          validations();
    }

    function createfile()
    {

     var file;

          var em1=document.getElementById('Email').value;

          var tablemain = document.getElementById('tblmain');

     if(fso.fileExists(FILENAME))
          {
          xmlDoc.load(FILENAME);
               var lng;
               lng=xmlDoc.getElementsByTagName("Details");

               var xmlread= fso.OpenTextFile(FILENAME,1,true,0);

               var x=xmlread.readAll();
               var replace=x.replace('</OEL>','');
               var sno=lng.length + 1;
               file=fso.OpenTextFile(FILENAME,2,true);

               file.writeLine(replace);

               file.WriteLine('<Details category="'+sno+'">');
               file.WriteLine('<SNo>'+sno+'</SNo>');
               file.WriteLine('<E-mail>'+em1+'</E-mail>');

               file.WriteLine('</Details>');
               file.WriteLine('</OEL>');
               
          alert('Update: Uw aanmelding is verwerkt!');
          }
          else
          {

               file= fso.CreateTextFile(FILENAME, true);
               file.WriteLine('<?xml version="1.0" encoding="utf-8" ?>');
          file.WriteLine('<?xml-stylesheet type="text/xsl" href="cdcatalog.xsl"?>');
               file.WriteLine('<OEL>');
               file.WriteLine('<Details category="1">');
               file.WriteLine('<SNo>'+1+'</SNo>');
               file.WriteLine('<E-mail>'+em1+'</E-mail>');

               file.WriteLine('</Details>');
               file.WriteLine('</OEL>');     

          alert('Nieuw: Uw aanmelding is verwerkt!');
          }

     <!-- displayData();-->

     document.getElementById('Email').value='';

    addRow('tablemain');
     file.close();
    }

         
    function validations() 
    {
     var email = document.getElementById('Email');
            var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

     if(email.value!="")
     {
               if (!filter.test(email.value)) 
          {
                    alert('Voer een correct e-mail adres in');
                    return false;
               }
                    else
                    {
                         createfile();
                    }
               }     
     else
     {
          alert('Voer een e-mail adres in');
     }
    }

    function addRow(id) 
    {

        if(fso.fileExists(FILENAME))
        {

     xmlDoc.load(FILENAME);
          var x;
          x=xmlDoc.getElementsByTagName("Details");

            var table = document.getElementById('tbl');        

     var nxtbtn= document.getElementById("btnnext");
     var prvbtn=document.getElementById("btnprev");
     nxtbtn.disabled=true;
     prvbtn.disabled=true;
     if(x.length >5)
     {
          nxtbtn.disabled=false;
     }
     var j=0;k=5;
     if(k>x.length)
     {k=x.length;}

     var store=document.getElementById("txtstore");
     var maxval=document.getElementById("txtmax");

     if(id=="btnprev")
     {        
          if((store.value % k)==0)
          {
               store.value = store.value - k ;
               if(store.value>0)
               {
                    j = parseInt(store.value);
                    k += parseInt(store.value);
               }
          }
          else
          {
               store.value =store.value - (store.value % k) ;

               if(store.value >0)
               {
                    j = store.value - k;
                    k = store.value;
               }
     
          }
     
          if(j > 0)
          {
               prvbtn.disabled=false;
          }

     }
     if(id=="btnnext")
     {
          if(store.value==0)
          {
               store.value=table.rows.length;
          }
          else if(store.value <0)
          {
               store.value=maxval.value;
          }
          prvbtn.disabled=false;
          if(store.value >=k)
          {
               j +=parseInt(store.value);
               k +=parseInt(store.value);
               if(k >= x.length)
               {
                    k=x.length;
                    nxtbtn.disabled = true;
                    prvbtn.disabled = false;
               }
          }
     }

    }
}

</script>

    <link rel="stylesheet" href="css/style.css">
    <link href='http://fonts.googleapis.com/css?family=Lato:400,700' rel='stylesheet' type='text/css'>
  </head>
  <body>
  

    <form action="#" id="empForm" action="" method="get">
      <div class="header">
         <p><b>Hier een titel</b></p>
      </div>
      <div class="description">
        <p>Hier een kleine tekst</p>
      </div>
      <div class="input">
        <input type="text" class="button" id="Email" name="Email" placeholder="Vul hier je e-mail adres in">
        <input type="submit" class="button" id="submit" value="AANMELDEN" onclick="SaveXMLData()"/>
      </div>
    </form>
  </body>
</html>



Origineel bericht:Ik ben nu al een paar dagen bezig, maar ik krijg het niet werkend. Normaal zou ik dit doen met PHP, maar ik wil dat het ook offline werkt. Vandaar dat ik ben overgestapt naar Javascript, maar dat beheers ik helaas niet goed genoeg.

Wat ik wil maken is het volgende:
Een webpagina met één invoerveld en één verzendknop.

Het is de bedoeling dat de gebruiker zijn e-mail adres op kan geven en kan versturen. Na een klik op de knop wordt er gekeken of het xml document al bestaat. Zo niet, wordt het document gemaakt. Indien wel, wordt het e-mail adres bijschreven.

Ik zou graag willen dat dit offline werkt omdat ik het dan op mijn tablet kan gebruiken zonder internet (dus beveiligingsgevaren zijn niet aan de orde).

Ik heb een mooie werkende code gevonden. Echter is deze te uitgebreid (teveel invoervelden e.d.) dus probeer ik deze aan te passen. Maar elke keer als ik dat doe werkt het script niet meer...

Ik ben geen programmeur, maar vind het erg leuk om dit soort zaken te leren. Wie kan mij helpen?

Voor de volledigheid, hier de gevonden code. Een simpelere en kortere code heb ik helaas niet kunnen vinden.

Edit: Voor de leesbaarheid de originele code weggehaald. Mocht je deze willen lezen, dan kan je die vinden onder aan de volgende pagina.

[ Voor 103% gewijzigd door EJanus op 07-10-2015 10:01 . Reden: script bijgewerkt ]


Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 13-10 12:18

André

Analytics dude

Je bent dus blijkbaar al een paar stappen verder. Wat nou als je nog even door blijft proberen, en ook snapt waarom iets niet werkt. Dan kun je echte concrete problemen hier neerleggen en kunnen we je op weg helpen. Het simpelweg plakken van de hele code gaat niet echt werken, wij gaan het niet voor je doen ;)

Acties:
  • 0 Henk 'm!

  • EJanus
  • Registratie: December 2013
  • Nu online
Bedankt voor je reactie. Ik heb ervoor gekozen om de code hier wel te plakken. Het komt de leesbaarheid niet ten goede, maar het helpt wellicht anderen die het zelfde willen bereiken. Ik ben het echter wel met je eens dat mijn vragen op dit moment te algemeen zijn, dus ik doe mijn best om te leren waarom iets niet werkt.

Het geüpdatete script werkt nu ineens niet meer. Ik ben er nog niet uit waarom. Volgens mij werkte het net nog wel en heb ik er geen veranderingen in aangebracht. Mijn zoektocht gaat dus nog even door.

Ps. Wel jammer dat jullie dat niet even voor mij doen... :P

Update: Bij mij werkt het soms. En soms maakt hij geen xml file aan. Lijkt volstrekt willekeurig. Ik blijf testen. Wat een hobby... :P

[ Voor 15% gewijzigd door EJanus op 01-10-2015 14:47 ]


Acties:
  • 0 Henk 'm!

  • skate master
  • Registratie: September 2004
  • Laatst online: 13-10 08:46

skate master

Autodesk Educator Expert

Je script zal nooit een bestand wegschrijven, het pad waar je naar verwijst bestaat simpelweg niet.
Wijzig
code:
1
var FILENAME='c:example.xml';

in
code:
1
var FILENAME='c:\\example.xml';


Daarnaast:
In welke browser test je het script?
Wanneer ik jou script pak en deze test in Firefox, dan doet deze het niet.
In Internet Explorer wel, hier zit denk ik ook net het probleem.
Je gebruikt ActiveX, voor zover ik weet (correct me if im wrong) werkt dit alleen stabiel in IE, mits je deze ActiveX objecten ook toestaat om uitgevoerd te worden.

Acties:
  • 0 Henk 'm!

  • EJanus
  • Registratie: December 2013
  • Nu online
Dat zag ik inderdaad over het hoofd. 'c:\\example.xml' werkt inderdaad en alles loopt als een zonnetje. Heb het script in de TS aangepast.

Ik gebruik IE11 en heb er inderdaad niet goed over nagedacht dat dit script wellicht niet gaat werken in andere browsers... Lekker handig van me... Het idee was juist om het op een tablet uit te kunnen voeren.

Edit: Een oplossing is natuurlijk een Windows tablet.

[ Voor 7% gewijzigd door EJanus op 07-10-2015 10:02 . Reden: oplossing gevonden ]