5. September 2010  
  Suche:
 
  Basics
  Code-Galerie
  Forum
  FAQ
  Tipps & Tricks
  Literatur
  Knowledge Base
  Workshops
  JSP-Hosting
  JSP-Engines
  Jobbörse
  Links
  JSP-Sites
  Newsletter
  JSP-Test
  Impressum
  Username:
  
  Passwort:
  
  

  Jetzt registrieren
  Warum registrieren?

  Valid HTML 4.01!
  Valid CSS!

XML lesen und schreiben

von shaun,  11.07.2007 13:11:35   [vote]
Basierend auf den Tutorials mit einer JSP-Datei eine XML-Datei schreiben, ein Formular erstellen und die geänderten Daten wieder abspeichern
<%@ page language="java"
   import="java.io.*,
      java.util.*,
      org.jdom.*,
      org.jdom.input.*,
      org.jdom.output.*" %>
<html>
   <body>

---- Step 1: Writing the Basic xml ----
<%
String pId1 = "";
String pTitle1 = "";
String pAuthor1 = "";
String pId2 = "";
String pTitle2 = "";
String pAuthor2 = "";

if (request.getParameter("title_1") == null) {
   Document doc = new Document(); // Erzeugung eines XML-Dokuments

   Element elRoot = new Element("books"); // Erzeugung des Root-XML-Elements mit dem Namen books
   doc.setRootElement(elRoot);

   Element elBook = new Element("book"); // Erzeugung eines XML-Elements mit dem Namen book
   elBook.setAttribute("id", "1"); // Dem Element book geben wir noch ein Attribut mit dem Namen id und dem Wert 1
   Element elTitle = new Element("title"); // Und noch ein XML-Element mit dem Namen title
   elTitle.addContent(new Text("Java 2 Enterprise Edition")); // dem wir einen Inhalt geben
   elBook.addContent(elTitle); // und hiermit an unser Element book haengen
   elBook.addContent((Element)new Element("author").addContent(new Text("Mark Wuttka"))); // Autor an Buch in verkuerzter Form
   elRoot.addContent(elBook); // Jetzt muessen wir noch an unser Root-Element books haengen

   elBook = new Element("book"); // Damit das eine Buch nicht so alleine ist haengen wir noch ein zweites dran
   elBook.setAttribute("id", "2");
   elBook.addContent((Element)new Element("title").addContent(new Text("JavaServer Pages and Servlets")));
   elBook.addContent((Element)new Element("author").addContent(new Text("Irgendwer")));
   elRoot.addContent(elBook);

   Format format = Format.getPrettyFormat(); // Damit das XML-Dokument schoen formattiert wird holen wir uns ein Format
   format.setEncoding("iso-8859-1"); // und setzen das encoding, da in unseren Buechern auch Umlaute vorkommen koennten. Mit format kann man z.B. auch die Einrueckung beeinflussen

   XMLOutputter xmlOut = new XMLOutputter(format); // Erzeugung eines XMLOutputters dem wir gleich unser Format mitgeben

   xmlOut.output(doc, new FileOutputStream(getServletContext().getRealPath("/rewrite.xml"))); // Schreiben der XML-Datei ins Filesystem
   out.println("<div align='left'>Success in <b>creating</B> rewrite.xml!</div>");
}
else
{

   //hier kann man es sich leicht machen - es gibt nur 2x das Element buch
   //oder mann muss es dynamisch machen.
   pId1 = request.getParameter("id_1");
   pTitle1 = request.getParameter("title_1");
   pAuthor1 = request.getParameter("author_1");
   pId2 = request.getParameter("id_2");
   pTitle2 = request.getParameter("title_2");
   pAuthor2 = request.getParameter("author_2");
   
   Document doc = new Document(); // Erzeugung eines XML-Dokuments

   Element elRoot = new Element("books"); // Erzeugung des Root-XML-Elements mit dem Namen books
   doc.setRootElement(elRoot);

   Element elBook = new Element("book"); // Erzeugung eines XML-Elements mit dem Namen book
   elBook.setAttribute("id", pId1);
   Element elTitle = new Element("title"); // Und noch ein XML-Element mit dem Namen title
   elTitle.addContent(new Text(pTitle1)); // dem wir einen Inhalt geben
   elBook.addContent(elTitle); // und hiermit an unser Element book haengen
   elBook.addContent((Element)new Element("author").addContent(new Text(pAuthor1))); // Autor an Buch in verkuerzter Form
   elRoot.addContent(elBook); // Jetzt muessen wir noch an unser Root-Element books haengen

   elBook = new Element("book"); // Damit das eine Buch nicht so alleine ist haengen wir noch ein zweites dran
   elBook.setAttribute("id", pId2);
   elBook.addContent((Element)new Element("title").addContent(new Text(pTitle2)));
   elBook.addContent((Element)new Element("author").addContent(new Text(pAuthor2)));
   elRoot.addContent(elBook);

   Format format = Format.getPrettyFormat(); // Damit das XML-Dokument schoen formattiert wird holen wir uns ein Format
   format.setEncoding("iso-8859-1"); // und setzen das encoding, da in unseren Buechern auch Umlaute vorkommen koennten. Mit format kann man z.B. auch die Einrueckung beeinflussen

   XMLOutputter xmlOut = new XMLOutputter(format); // Erzeugung eines XMLOutputters dem wir gleich unser Format mitgeben

   xmlOut.output(doc, new FileOutputStream(getServletContext().getRealPath("/rewrite.xml"))); // Schreiben der XML-Datei ins Filesystem
   
   out.println("<div align='left'>Success in <b>updating</B> rewrite.xml!</div>");
}

%>
<BR>            
<BR>   
---- Part 2: reading the XML ----
<%
out.println("<table border='1'>");
// Erzeugung eines SAXBuilders
SAXBuilder builder = new SAXBuilder(false);
// der uns jetzt ein JDOM-Dokument aus unserer XML-Datei erzeugt
Document docs = builder.build(new FileInputStream(getServletContext().getRealPath("/rewrite.xml")));

// Wir lassen uns das Root-Element (books) geben
Element dasRoot = docs.getRootElement();

// Und holen uns eine Liste aller Kinder (book)
List listBooks = dasRoot.getChildren();
// Ueber eine Schleife holen wir uns alle Kinder
for (int i=0; i<listBooks.size(); i++)
{
  out.println("<tr><td>");
  // Hole das i-te Element aus der Liste
  Element dasBook = (Element)listBooks.get(i);
  // Anzeige des Attributs id
  String sId    = dasBook.getAttributeValue("id");
  out.println(sId + "</td><td>");
  // Anzeige des Inhalts des Knotens title
  String sTitle  = dasBook.getChild("title").getText();
  out.println(sTitle + "</td><td>");
  String sAuthor = dasBook.getChild("author").getText();
  out.println(sAuthor + "</td></tr>");
}
out.println("</table>");
// Kleine Manipulation Reihenfolge der beiden Eintraege vertauschen
// listBooks.add(listBooks.remove(0));


               %>
<BR>            
<BR>               
--- Part 3: Manipulating the XML ---
<%
out.println("<form action='./writeFileToServer.jsp' method='post'><table>");
builder = new SAXBuilder(false);

Document dok = builder.build(new FileInputStream(getServletContext().getRealPath("/rewrite.xml"))); // der uns jetzt ein JDOM-Dokument aus unserer XML-Datei erzeugt

Element theRoot = dok.getRootElement(); // Wir lassen uns das Root-Element (books) geben
List listOfBooks = theRoot.getChildren(); // Und holen uns eine Liste aller Kinder (book)
   
for (int i=0; i<listOfBooks.size(); i++) // Ueber eine Schleife holen wir uns alle Kinder
{
  out.println("<tr><td>");

  Element theBook = (Element)listOfBooks.get(i);    // Hole das i-te Element aus der Liste
 
  String sId    = theBook.getAttributeValue("id"); // Anzeige des Attributs id
  out.println("ID: ");
  out.println(sId + "</td><td>");
  out.println("<input name='id_" + sId + "' value='" + sId + "' TYPE='hidden'>");
  String sTitle  = theBook.getChild("title").getText(); // Anzeige des Inhalts des Knotens title
  out.println("Title: </td><td>");
  out.println("<input type='text' size='40' name='title_" + sId + "' value='" + sTitle + "'>");
  //String sAuthor = theBook.getChild("author").getText(); // Anzeige des Inhalts des Knotens author
  out.println("Autor: </td><td>");
  out.println("<input type='text' name='author_" + sId + "' value='" + theBook.getChild("author").getText() + "'></td><tr>");
}

out.println("<tr><td></td><td></td><td></td><td><input type='submit' value='Abschicken'></td></tr>");
out.println("</table></form>");
%>
   </body>
</html>

<< zurück


Hinweis: Auf dieser Seite liegen Links zu anderen Seiten im Internet. Für alle diese Links gilt: Wir betonen ausdrücklich, daß wir keinerlei Einfluß auf die Gestaltung und die Inhalte der gelinkten Seiten haben. Deshalb distanzieren wir uns hiermit ausdrücklich von allen Inhalten aller gelinkten Seiten auf dieser Homepage und machen uns ihre Inhalte nicht zueigen. Diese Erklärung gilt für alle auf unserer Homepage angebrachten Links

Redaktion/Betreiber von JSP-Develop übernehmen keinerlei Gewährleistung und Verantwortung für die Richtig- und/oder Vollständigkeit von den auf den Webseiten JSP-Develop veröffentlichten Source Codes. Die Verantwortung der Verwendung/Anwendung sowie etwaige Modifikation der hier veröffentlichten Sourcen obliegt einzig dem Benutzer der Webseite, welche die veröffentlichten Sourcen in einer Applikation/Anwendung einsetzt. Durch das Kopieren und/oder Benutzen der Sourcen in einer Applikation/Anwendung bzw. etwaigen Abschriften wird dieser Rechtshinweis anerkannt.

Java, JSP, JavaServer Pages, J2EE, EJB, JDBC, JNDI, JTA, Sun, Sun Microsystems are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and in other countries. IBM, WebSphere are trademarks or registered trademarks of International Business Machines Corporation. Other trademarks and registered trademarks are the property of their respective owners.