string in ein xml-object umwandeln

mr.freeze

Aktives Mitglied
Hallo,
ich habe folgenden code:
Java:
URLConnection connection = null;
		try {
			connection = new URL("http://server/bla/auth?user=bla&password=123").openConnection();
			BufferedReader reader = null;
			reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
			
//			Object myContent = connection.getContent();
//			System.out.println("Datentyp: " + myContent.getClass());
//			System.out.println("ContentType: " + connection.getContentType());
	
			String content = "";
			String line;
			while ((line = reader.readLine()) != null) {
			    System.out.println(line);
			    content += line;
			}
			System.out.println("Mein Inhalt: " + content);
			
		
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

gibt es eine möglichkeit aus einem string ein xml-object zu generieren.
ich bekomme eine xml-datei zurück, welche möglichkeit habe ich denn
noch um den content gleich als xml-object zu speichern?

gruß
 
Das müsste etwa wie folgt gehen:
Java:
String xmlAlsString = ...;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document xmlDoc = db.parse(new InputSource(new StringReader(xmlAlsString)));

Ggfs. kannst du aber auch überlegen, das XML-Document direkt zu schicken?
 
es wird ja ein xml-dokument zurückgeschickt.
weiß aber leider nicht, wie ich es auffangen kann.
und ohne den streamreader machen kann.
gruß
 
KrokoDiehl hat doch Code gepostet, hilft das? ist noch eine Frage offen?
möglichst immer klare Postings schreiben 😉
 
ich habe folgenden code
Java:
private static String getContent(URLConnection pConnection, BufferedReader pReader) throws IOException
{
	pReader = new BufferedReader(new InputStreamReader(pConnection.getInputStream()));
	String content = "";
	String line;
	while ((line = pReader.readLine()) != null) {
	    //System.out.println(line);
	    content += line;
	}
	
	return content;
}

//In xml umwandeln
String xmlAlsString = getContent(pConnection, pReader);
String myFile = "/home/user/Develop/loginResponse.xml";
File fpOutput = new File(myFile);
FileWriter fw = new FileWriter(fpOutput);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(xmlAlsString);
	
// schließen der Ressourcen
bw.close();
fw.close();

wenn ich die url aufrufe bekomme ich ja
normalerweise ein xml-dokument zurück.
welche möglichkeit habe ich denn das xml-doc
direkt aufzufangen? ohne pReader = new BufferedReader(new InputStreamReader(pConnection.getInputStream()));

nach dem motto -> seite aufrufen -> response in ein xml-dokument speichern
gibt es da einen direkten weg?

gruß
 
Hi

könntest du deine Frage nochmal anderster Stellen? Verstehe nicht ganz was du meinst.
Willst du einen String in ein XML-Dokument oder eine XML-Datei schreiben?

Wenn du in ein Dokument schreiben willst, siehe Post von Krokodiehl

Wenn in eine Datei dann könntest du es z.b. nachdem du es in ein Dokument geschrieben hast damit in eine Datei schreiben
Java:
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();

t.transform(new DOMSource(document), new StreamResult(new OutputStreamWriter(
                        new FileOutputStream(file))));

Grüße
sylo
 
aus dem Stream wird normalerweise nur Text kommen, den du in irgendwas umwandeln musst,
so ist das Leben, diese Zeile kannst du eher nicht sparen

'direkt aufzufangen' ist da nicht ganz das Problem, eher dass nicht 'direkt gesendet' wird, sondern nur ein Textdarstellung
 
Das müsste etwa wie folgt gehen:
Java:
String xmlAlsString = ...;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document xmlDoc = db.parse(new InputSource(new StringReader(xmlAlsString)));

Ggfs. kannst du aber auch überlegen, das XML-Document direkt zu schicken?
lol.... mal wieder der beweis wie schlecht man APIs machen kann....

gibt es echt keinen besseren weg aus einem String ein Document zu machen ? oh man 6 Klassen dafür....

sry wahr. offtopic
 
Tja 🙂 Nö geht nicht ^^

Das liegt aber daran, wie im JRE die Implementierungen der Document und DocumentFactory, ... gesucht und instanziert werden (auch wenn ich jetzt nicht sagen will, dass der Weg schön ist)
 
ist doch völlig egal welcher Code dafü nötig ist, intern werden letzlich hunderte Klasse angesprochen,
einfach alles in eine statische Methode und die dann genau wie gewünscht
> Document doc = Document.readFromString(xmlString);
aufrufen

genauso sehe das mit Checked Exceptions,
da jede komplizierte API-Anbindung in eine einzelne separate Stelle verbannt wird ist es ganz egal was man dort machen muss,
im Hauptprogramm hat man die kürzestmöglichen sauberen Aufrufe
 

Neue Themen


Zurück
Oben