2011-09-30 17 views
34

Sto provando a scrivere un codice che mi aiuti a creare un oggetto XML. Per esempio, darò una stringa come input per una funzione e mi restituirà un XMLObject.Come creare un oggetto XML da String in Java?

XMLObject convertToXML(String s) {} 

Quando ero alla ricerca sulla rete, in genere ho visto esempi sulla creazione di documenti XML. Quindi tutte le cose che ho visto sulla creazione di un XML e scrivere su un file e creare il file. Ma ho fatto qualcosa del genere:

Document document = new Document(); 
Element child = new Element("snmp"); 
child.addContent(new Element("snmpType").setText("snmpget")); 
child.addContent(new Element("IpAdress").setText("127.0.0.1")); 
child.addContent(new Element("OID").setText("1.3.6.1.2.1.1.3.0")); 
document.setContent(child); 

Pensi che sia sufficiente creare un oggetto XML? e inoltre puoi aiutarmi come ottenere dati da XML? Ad esempio, come posso ottenere lo IpAdress da quel XML?

grazie a tutti voi un sacco

EDIT 1: In realtà ora ho pensato che forse sarebbe stato molto più facile per me avere un file come base.xml, scriverò tutte le cose di base in quella ad esempio:

<snmp> 
<snmpType><snmpType> 
<OID></OID> 
</snmp> 

e quindi utilizzare questo file per creare un oggetto XML. Cosa ne pensi di questo?

+0

fornire il nome completo (FQN) di XMLObject. Stai usando xmlbeans? –

+0

Ok, prima domanda: che cosa è 'XMLObject'? Quale libreria è? –

+0

XMLObject è solo un esempio, voglio una funzione che ottiene una stringa come parametro e quindi restituirà un oggetto XML. Sto usando jdom per l'implementazione. – Ozer

risposta

70

Se è possibile creare una stringa XML si può facilmente trasformare l'oggetto documento XML per esempio -

String xmlString = "<?xml version=\"1.0\" encoding=\"utf-8\"?><a><b></b><c></c></a>"; 

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder builder; 
try { 
    builder = factory.newDocumentBuilder(); 
    Document document = builder.parse(new InputSource(new StringReader(xmlString))); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

È possibile utilizzare l'oggetto documento e le librerie di analisi xml o xpath per recuperare l'indirizzo IP.

+0

come ho capito "parse" restituisce un oggetto documento DOM, cosa farai per ottenere una versione SAX di questo codice? Grazie! – theexplorer

+0

Cosa succede se non c'è una fonte e vogliamo creare un nuovo oggetto Document e quindi aggiungervi dei figli, è possibile o dobbiamo prima creare l'elemento radice? –

10

provare qualcosa di simile

public static Document loadXML(String xml) throws Exception 
{ 
    DocumentBuilderFactory fctr = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder bldr = fctr.newDocumentBuilder(); 
    InputSource insrc = new InputSource(new StringReader(xml)); 
    return bldr.parse(insrc); 
} 
Problemi correlati