# Aus einem String einen InputStream erzeugen?



## Romsl (7. Juli 2005)

Hi,

gibt es eine Möglichkeit aus einem String einen InputStream zu erzeugen.

Ich möchte einen String (wird von einer Drittanwendung geliefert und ist im Endeffekt ein XML Dokument) vom w3c DocumentBuilder parsen lassen um so den XML Baum aufzubauen.
Bis jetzt hole ich mir den String, schreib diesen in einen Datei und parse anschließend dann dieses erstellte File -> nicht effizient genug, deßhalb soll dieser String (falls es gehen sollte) gleich geparst werden.

Die Klasse StringBufferInputStream ist leider deprecated.

Bin offen für alle Vorschläge die mein Problem beheben oder verbessern.


----------



## RedWing (7. Juli 2005)

Dein Problemlösung steht doch schonin der API:



> Deprecated. This class does not properly convert characters into bytes. As of JDK 1.1, the preferred way to create a stream from a string is via the StringReader class.


 :

http://java.sun.com/j2se/1.4.2/docs/api/java/io/StringReader.html

Gruß

RedWing


----------



## Romsl (7. Juli 2005)

Danke, lesen kann ich selber.

Dann gib mir doch bitte mal den Codeschnipsel zu meinem InputStream Object


----------



## RedWing (7. Juli 2005)

Ich weiß ja nicht weas du genau machen willst, aber der StringReader bietet dir die
selbe Schnittstelle wie der StringBufferInputStream

```
String word = "Das ist mal ein Test";
StringReader input = new StringReader(word);
int zeich;
while((zeich = input.read()) != -1)
   //parsing the string byte for byte
input.close();
```

Gruß

RedWing


----------



## Romsl (7. Juli 2005)

Hab doch oben beschrieben was ich möchte. Oder ist das nicht verständlich? Ich kann nun mal kein Reader von einem DocumentBuilder parsen lassen, sondern nur InputStreams.


----------



## RedWing (7. Juli 2005)

Sag das doch gleich 


```
String word = "Das ist mal ein Test";
Document doc = (new DocumentBuilder()).parse(new InputSource(new StringReader(word)));
```
müsste gehen, denk ich mal naja biss auf das DocumentBuilder abstract ist aber weißt schon die Methode die du brauchst ist wohl dann:
Document parse(InputSource is) 
Gruß

RedWing


----------



## RedWing (7. Juli 2005)

noch ne Möglichkeit:


```
String word = "Das ist mal ein Test";
(new InputSource(new StringReader(word))).getByteStream();
```
Dann hast du auch deinen InputStream


----------



## Thomas Darimont (7. Juli 2005)

Hallo!

 Schau mal hier:

```
package de.tutorials;
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
 
 public class StringBasedInputStream {
 
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) {
 		// TODO Auto-generated method stub
 		String str ="gibt es eine Möglichkeit aus einem String einen InputStream zu erzeugen.";
 		InputStream bais = new ByteArrayInputStream(str.getBytes());
 	}
 
 }
```
 
 Gruß Tom


----------



## takidoso (2. August 2005)

Ich habe genau das selbe Problem gehabt und habe es mal wieder. 
http://www.tutorials.de/tutorials195761.html
Beim Googlen fiel mir folgender Bug-Report auf, der mich ziemlich irritiert

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4094886

Also ehrlich gesagt weiß ich nicht was ich machen soll, ich denke ich bleibe bei Toms oder der veralteten Lösung und hoffe kein Problem zu bekommen.
ist schon drollig einen mittlerweile 7-8 Jahre alten Framework-Bug oder harmloser ausgedrückt Unzulänglichkeit nicht abzustellen.

Takidoso


----------

