# PrintWriter zu String



## LordDarkness (19. Oktober 2009)

Hallo,
ich wollte fragen ob es möglich ist eine PrintWriter Variable in ein String umzuwandeln?

Gruß Hüsi


----------



## Anime-Otaku (19. Oktober 2009)

Hallo,

ein PrintWriter repräsentiert einen Stream den man irgendwo hinschreiben willst.

Die Frage ist was du genau machen willst? Kannst du das ein wenig genauer erörtern?


----------



## LordDarkness (19. Oktober 2009)

Ich habe diesen Code geschrieben und bekomme einen fehler das mein outp kein String ist. Reicht es das ich es mit .toString mache?


```
PrintWriter outp = response.getWriter();
		 XMLWriter writer = new XMLWriter(System.out);
		 writer.write(outp);
		 writer.close();
```


----------



## Anime-Otaku (19. Oktober 2009)

Der PrintWriter ist hier dafür gedacht, damit du eine Response (für was auch immer) erstellen kannst.

Im PrintWriter kannst du dann mit verschiedenen Methoden etwas (vermutlich dein response) schreiben.

Der XMLWriter ist genau wie PrintWriter ein Stream. 

*Daher die Frage was genau du machen willst?* Was macht deine Anwendung bzw. was willst du machen? 
Damit wir (die community) verstehen kann was du machen willst und dich entsprechend in die richtige Richtung zu weisen.


----------



## LordDarkness (21. Oktober 2009)

Das ist hier mein ganzes Programm, hoffe ihr versteht es xD


```
import iset.cmsdk.core.DatabaseConnector;
import iset.cmsdk.core.TemplateLoader;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Vector;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;

public class XMLSearch extends HttpServlet {

	private static final long serialVersionUID = 5946965066811596464L;
	private DatabaseConnector dbConnector = new DatabaseConnector();
	private static final String CONTENT_TYPE = "text/html; charset=windows-1252";
	private TemplateLoader xmlTpl;
	private final Logger logger = Logger.getLogger(getClass());
	private String setSword = "";
	private String setDefOp = "";
	private String setType = "";
	private String setResultcount = "";
	private String setCreated = "Test";
	private boolean tt = true;


	public String showContent(HttpServletRequest request, PrintWriter out,
			HttpServletResponse response) {

		setSword = request.getParameter("sword");
		setDefOp = request.getParameter("defop");
		setType = request.getParameter("type");
		setResultcount = request.getParameter("resultcount");
		setCreated = request.getParameter("created");

		xmlTpl = new TemplateLoader(request);
		// In der XMLSearch.tpl zugriff & ausgabe auf Spaltennamen
		xmlTpl.initTemplate("modules/xmlsearch/XMLSearch.tpl");
		xmlTpl.setWriter(new StringWriter());

		try {
			if (tt == true) {
				Vector<HashMap<String, Object>> result = new Vector<HashMap<String, Object>>();
				result = dbConnector
						.getResultVector("SQL Abfrage");
				xmlTpl.addToContext("results", result);
				// xmlTpl.addToContext("abstract", result);
				xmlTpl.addToContext("resultcount", result.size());

			}
			// Template Setzen

			xmlTpl.addToContext("sword", setSword);
			xmlTpl.addToContext("defop", setDefOp);
			xmlTpl.addToContext("type", setType);

			xmlTpl.addToContext("created", setCreated);
			// TEMPLATE FERTIG
			xmlTpl.mergeTemplateContext();
			return xmlTpl.getWriter().toString();
		} catch (SQLException e) {
			logger.debug(e.getMessage());
		} finally {
			dbConnector.closeDbConnection();
		}
		return setType;
	}

	// @Override
	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		response.setContentType(CONTENT_TYPE);
		PrintWriter outp = response.getWriter();

		// XMLWriter writer = new XMLWriter(System.out);
		// writer.write(outp);
		// writer.close();

		outp.println(showContent(request, outp, response));
		outp
		.println("<a href=http://localhost:8181/renknowNET/xmlsearch?sword=wind&defop=1&type=0>HIER</a>");
		// out.println("<meta http-equiv=\"refresh\" content=\"0; URL=http://localhost:8181/renknowNET/xmlsearch?sword=hoch&defop=1&type=0\">");
		outp.close();

	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doGet(req, resp);
	}
```


----------



## Anime-Otaku (21. Oktober 2009)

Das erklärt nur bedingt, was es machen soll. 
Was soll bei doGet() passieren?

Ich vermute, dass das XML aus showContent zurückggeben werden soll.


----------



## LordDarkness (22. Oktober 2009)

Das ganze ist ein Servlet und ich habe einen Stream aus dem ich was lesen will und das was da rauskommt in diesen XMLWriter packen wo ich es in eine Xml Datei oder es in ein Xml Format bringe, damit ich dies dann im web als xml datei (format) anzeigen kann. Ich weiss aber nicht ob es mit dem XMLWriter funktioniert!? 

Deswegen die frage wie mache ich das ^^ also wie füge ich dies in mein Programm ein?

Danke schonmal für die ganzen Antworten


----------



## Anime-Otaku (22. Oktober 2009)

Der PrintWriter ist die Antwort, die wieder zurück an den Client geht. Da wirst du sicher nichts herausbekommen.

Wenn du den Inhalt den du bekommst auslesen willst musst du mit

```
BufferedReader reader = request.getReader();
```
die Clientanfrage auslesen.

Wenn du den String aus showContent  weitergeben willst, musst du den String, welcher zurückggeben wird dem PrintWriter einfach mitgeben.


----------

