2013-03-05 30 views
8

Come convertire String con contenuto in formato XML nel documento JDom.Come convertire String con contenuto in formato XML nel documento JDom

sto provando con codice qui sotto:

String docString = txtEditor.getDocumentProvider().getDocument(
txtEditor.getEditorInput()).get(); 

SAXBuilder sb= new SAXBuilder(); 

doc = sb.build(new StringReader(docString)); 

uno può aiutare a risolvere problema di cui sopra. Grazie in anticipo !!

risposta

11

Questo è il modo in genere si analizza un XML al documento

try { 
    SAXBuilder builder = new SAXBuilder(); 
    Document anotherDocument = builder.build(new File("/some/directory/sample.xml")); 
} catch(JDOMException e) { 
    e.printStackTrace(); 
} catch(NullPointerException e) { 
    e.printStackTrace(); 
} 

Questo è preso da JDOM IBM Reference

Nel caso in cui si dispone di stringa è possibile convertirlo in InputStream e poi passarlo

String exampleXML = "<your-xml-string>"; 
InputStream stream = new ByteArrayInputStream(exampleXML.getBytes("UTF-8")); 
Document anotherDocument = builder.build(stream); 

Per i vari argomenti builder.build() supporta è possibile passare attraverso lo api docs

+0

Grazie per la vostra risposta rapida. Il codice incollato funziona bene per creare un nuovo documento utilizzando il file disponibile su un percorso particolare. Ma nel mio caso, ho bisogno di creare/convertire una stringa che ha contenuto in formato XML in Documento. –

+0

@akhil_gupta Ho aggiornato la risposta con il vostro requisito – AurA

+0

Sì, il codice funziona bene per creare un nuovo documento da un file .xml esistente. Ma qui non ho alcun file xml. ottengo questa stringa (che ha contenuti in formato xml) da qualcun altro. Come puoi vedere il mio codice: String docString = txtEditor.getDocumentProvider(). GetDocument ( txtEditor.getEditorInput()). Get(); –

6

Questa è una FAQ che shold ha una risposta più accessibile rispetto alla FAQ attuale: How do I build a document from a String?

Così, ho creato issue #111

Per quello che vale, ho già migliorato i messaggi di errore di questa situazione (vedi the previous issue #63 e ora si dovrebbe avere un errore che dice:

MalformedURLException mx = new MalformedURLException(
    "SAXBuilder.build(String) expects the String to be " + 
    "a systemID, but in this instance it appears to be " + 
    "actual XML data."); 

linea di fondo è che si dovrebbe utilizzare:

Document parseddoc = new SaxBuilder().build(new StringReader(myxmlstring)); 

rolfl

+0

In realtà, sembra che anche il codice incollato da me funzioni correttamente. c'era un problema in qualche altra parte nel mio codice. Ma grazie per aver esaminato questo. –