|
|
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> |
|
|
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.
|
|
|
|