# JAVA XML Parser der einen String parst



## sec4all (27. Sep 2006)

Hallo zusammen,

kennt jemand einen *Java XML Parser der einen String anstatt einer XML File als Argument entgegen nimmt* und diesen parst?

Ich habe aktuell das Problem, dass ich einen String von einem Web Service zurück geliefert bekomme, dieser aber XML-Tags enthält, die ich parsen muss um diese auswerten zu können.

Dafür verwende ich aktuell den SAXParser des JDK 1.3. Der Parser muss unter JDK 1.3 lauffähig sein, da die gesamte Applikation nur mit Java 1.3 läuft.

```
...
Writer fw = new FileWriter(new File("test.xml"));
fw.write(XMLUtils.ElementToString((Element) value));
fw.close();

SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
saxParser parser = saxParserFactory.newSAXParser();
XMLReader reader = parser.getXMLReader();
reader.setContentHandler(new SAXcheckOnly());
reader.setErrorHandler(new FehlerHandler(System.err));
reader.parse("test.xml");
...
```
*Wie bzw. mit welchem XML Parser kann ich einen String statt einer Datei parsen?* Die Methode parse() nimmt zwar einen String entgegen, allerdings nur einen, der den Dateinamen enthält.

Gruß
Sec4all
Homepage


----------



## Roar (27. Sep 2006)

alder ne die gleiche frage wurde 3 threads unter diesem hier schon gestern oder so gestellt :!: :!: :!: 
http://www.java-forum.org/de/viewtopic.php?t=37138


----------



## CelikBlek (28. Sep 2006)

```
String  str = "...";
SAXBuilder saxBuilder = new SAXBuilder(false);
ByteArrayInputStream byteAIS = new ByteArrayInputStream(str.getBytes());
Document doc = saxBuilder.build(new InputSource(byteAIS));
```
das sollte passen


----------



## sec4all (28. Sep 2006)

Vielen Dank für die Tipps!

Hier meine Lösung, die ich anhand der Tipps erstellt habe :


```
...
SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
saxParserFactory.setNamespaceAware(true);
SAXParser parser = saxParserFactory.newSAXParser();
XMLReader reader = parser.getXMLReader();
reader.setContentHandler(new SAXcheckOnly());
reader.setErrorHandler(new FehlerHandler(System.err));  
            		
InputStream inputStream = new ByteArrayInputStream((XMLUtils.ElementToString((Element) value)).getBytes());
InputSource dataSource = new InputSource(inputStream);
reader.parse(dataSource);
...
```

Hierbei ist noch zu erwähnen, dass die Strings in einer HashMap gespeichert waren. Aus diesem Grund musste ich die Methode ElementToString aus der XMLUtil Klasse anwenden. Ohne diesen Umstand wäre der Code wie folgt:


```
String str = "...";
...InputStream inputStream = new ByteArrayInputStream(str);
InputSource dataSource = new InputSource(inputStream);
reader.parse(dataSource);
...
```


Gruß
Sec4all


----------

