# XML Datei mit Formular eingaben Füllen JSP



## h00b (20. Jun 2012)

Hallo,

ich bin relativ neu in der Materie und habe eine kurze Frage. 

Ich habe ein Formular bei dem Nutzer Texteingaben tätigen können. 
Wenn die Eingabe getätigt wird soll automatisch in ein XML-File geschrieben werden. 
Den Code um eine XML-Datei zu erzeugen habe ich mit DOM gemacht. 

Ein Beispielelement:

Element Autor = doc.createElement("Autor");
            Autor.appendChild(doc.createTextNode (""Autor");
            rootElement.appendChild(Autor);

Das Element Autor ist hier also mit dem Text Autor gefüllt. 

Jetzt zu meiner Frage:

Wie kann ich das XML Element mit den Eingaben die in das Formular getätigt werden füllen (mit JSP).

Ich weiss, dass ich mit <%= request.getParameter("Autor") %> den Wert aus dem Formular hole. Mein Problem ist also wie bekomme ich den entsprechende Wert in die XML-File. Den Javacode habe ich über ein Serverlet eingebunden. 

Ich hoffe auf Hilfe, ich denke die Lösung ist nicht unbedingt ein riesenproblem aber für mich gerade schon 

Viele Grüße
Nico


----------



## Fant (22. Jun 2012)

Deine JSP sollte nur für die Darstellung verantwortlich sein. Soll heißen du schreibst deine Formulardaten entweder in eine Bean und verarbeitest sie dann weiter, oder du schickst sie an ein Servlet, welches sich darum kümmert diese Daten in deine XML zu schreiben.

Gruß Fant


----------



## h00b (22. Jun 2012)

Hallo Fant,

ja du hast natürlich recht aber da ich das alles zum ersten mal mache hab ich es erstmal mittels <% ... %> eingefügt, weil ich es nicht besser wusste. Jetzt den JavaCode aber in einem Servlet um wenigstens ein bisschen "guten Stil" zu nutzen 

Danke nochmal an euch beide!

Grüße
Nico


----------



## h00b (22. Jun 2012)

Hallo,

ich habe mal wieder eine kurze frage. 

Ich möchte gerne alle Elemente in meinem Dokument adressieren die Name heissen und entsprechend ihren Inhalt ausgeben. 

das habe ich bis jetzt dies gibt mir jedoch nur den Inhalt des Root Elements. 

```
Element node = doc.getDocumentElement();
            String Name = node.getNodeValue();
            System.out.println(Name);
```

Was ich jedoch möchte is bestimmte "kindeskindes" Elemente, des Root Elements, nämlich die <Name>-Elemente bzw. deren Inhalt. 

Wäre Super wenn mir jemand helfen könnte ich finde einfach nicht die richtige Methode.

Grüße Nico


----------



## Fant (22. Jun 2012)

z.B. hiermit:
Element (Java 2 Platform SE v1.4.2)

Gruß Fant


----------



## h00b (22. Jun 2012)

Hey Fant, 

vielen Dank die hab ich gesucht. Jetzt weiss ich auch wo ich zu suchen habe 

Habe das ganze mal eingebaut und bekomme leider immer null zurück eine Idee wieso? BIn eigentlich der Meinung das sollte so gehn:


```
File file = new File ("D:\\CIs.xml");
            
            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder;
            docBuilder = docFactory.newDocumentBuilder();
            Document doc;
            doc = docBuilder.parse(file);
            
            NodeList nodelist = doc.getElementsByTagName("Name");
            
            for (int i = 0; i < nodelist.getLength(); i++){
            
                System.out.println("WAS DA LOS DU : " + nodelist.item(i).getNodeValue());
            }
```


Vielleicht siehst du ja den fehler...

/EDIT: 
Hat sich erledigt mit getfirstCHild() geht er ins richtige...


Grüße


----------



## h00b (23. Jun 2012)

Hallo,

ich mal wieder 

Ich stehe vor der nächsten Herausfoderung die ich wohl ohne Hilfe nicht bewältigen kann. 

Ich habe ein nun ein Servlet, dass mir Inhalte bestimmter XML-Elemente zurück gibt. 

Jetzt möchte ich diese an eine JSP übergeben. und entpsrechend in eine Tabelle schreiben. 
Das mit der Tabelle sollte nun mal kein Problem sein. Aber wie bekomme ich die Inhalte an das JSP übergeben?

Ich stelle mir das momentan so vor, dass ich das nodelist Objekt übergebe und die for-schleife eben in das jsp einbaue (Auch wenns mit Sicherheit mal wieder schlechtester Stil ist.)

Ich dachte eigentlich so könnte es funktionieren:
Servlet:

```
try {
            
            File file = new File ("D:\\CIs.xml");
            
            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder;
            docBuilder = docFactory.newDocumentBuilder();
            Document doc;
            doc = docBuilder.parse(file);
            
            NodeList nodelist = doc.getElementsByTagName("Name");
            
            for (int i = 0; i < nodelist.getLength(); i++){
                
            System.out.println("WAS DA LOS DU : " + nodelist.item(i).getFirstChild().getNodeValue());
            }
            request.setAttribute ("nodelist", nodelist);
            RequestDispatcher view = getServletContext().getRequestDispatcher("/index.jsp");
            view.forward(request,response);
```

jsp:

```
table border="0" cellpadding="15" cellspacing="0" bgcolor="#E0E0E0">
            <tr>
                <th align="right">Configuration Items </th>
                <td><a href="CIgen.jsp"> <%request.getAttribute("nodelist");%> </a></td> 
            </tr>
        </table>
```



Wäre super wenn mir jemand helfen könnte

Grüße
Nico


----------



## h00b (23. Jun 2012)

Hallo,

also ich habe es jetzt anders gemacht und zwar mittels scriptlet.

DAs ganze sieht so aus und sollte denke ich entsprechend funktionieren es wird allerdings 2 fehler:

```
<% 
        try {
            
            File file = new File ("D:\\CIs.xml");
            
            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder;
            docBuilder = docFactory.newDocumentBuilder();
            Document doc = docBuilder.parse(file);
            NodeList nodelist = doc.getElementsByTagName("Name");
               %>
        <table border="0" cellpadding="15" cellspacing="0" bgcolor="#E0E0E0">
            <% for (int i = 0; i < nodelist.getLength(); i++) {%>
            <tr>
                <th align="right">Configuration Items </th>
                <td><a href="CIgen.jsp"> <%= nodelist.item(i).getFirstChild().getNodeValue()%> </a></td> 
            </tr>
            <% }%>
        </table>
    <% }catch (ParserConfigurationException pce) {
	  } catch (SAXException e) {    
          } catch (IOException e) {
    }%>
```

hier sagt er mir dass er den Typ nicht kennt und javax.swing.text.Document erforderlich ist, was aber oben importiert ist!:

```
Document doc = docBuilder.parse(file);
```

hier wirdt er "cannot find symbol methode symbol:getElementsByTagname(java.lang.String) location: variable doc of type javax.swing.text.Document:

```
NodeList nodelist = doc.getElementsByTagName("Name");
```

Das beschäftigt mich jetzt schon seit heute mittag und mit meinen schwachen Kenntnissen steh ich grad am ende 

Bitte helft mir 

Grüße
Nico

```

```


----------

