PDA

View Full Version : [Java .NET] Data.DataSet equivalente java


mone.java
03-02-2011, 12:42
Esiste per java un equivalente di Data.DataSet di .NET... Ovvero che crei file XML con la stessa semplicità e immediatezza???
Ho visto WebRowSet ma non capisco bene come si utilizzi anche perchè l'utilizzo è orientato ai database mentre io ho necessita di scrivere file semplicissimi tipo questo:


<NewDataSet>

<Prova>
<Valore>Paperino</Valore>
</Prova>

<Prova>
<Valore>Pippo</Valore>
</Prova>

<Prova>
<Valore>Pluto</Valore>
</Prova>

<Prova>
<Valore>Qui</Valore>
</Prova>

<Prova>
<Valore>Quo</Valore>
</Prova>

<simone>
<Valore>Paperino</Valore>
</simone>

<simone>
<Valore>1</Valore>
</simone>

<simone>
<Valore>2</Valore>
</simone>

<simone>
<Valore>3</Valore>
</simone>

<simone>
<Valore>4</Valore>
</simone>
</NewDataSet>


Graazie mille!

PGI-Bis
03-02-2011, 16:37
Non conosco DataSet ma in Java di precotto c'è un org.w3c.dom. Funziona così: crei un documento, gli aggiungi dei nodi, salvi il documento. Ad esempio:

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;

public class Main {

public static void main(String[] args) throws Exception {
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();

Element root = (Element) doc.appendChild(doc.createElement("root"));
Element prova = (Element) root.appendChild(doc.createElement("Prova"));
Element valore = (Element) prova.appendChild(doc.createElement("Valore"));

valore.setTextContent("pippo");
valore.setAttribute("pipposita", "10");

DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("pippo.xml"));
TransformerFactory.newInstance().newTransformer().transform(source, result);
}
}

Se non ti servono gli attributi puoi omettere il cast a Element e usare direttamente Node. L'unica cosa da ricordare è che gli elementi/nodi li crei col Document e poi devi aggiungerli:

Element x = doc.createElement("nome");
genitore.appendChild(x);

Puoi scriverlo su una riga:

Node x = genitore.appendChild(doc.createElement("nome"));

e se vuoi l'Element (per assegnare attributi) devi fare la conversione esplicita:

Element x = (Element) genitore.appendChild(doc.createElement("nome"));

Tutto qua.

Kralizek
03-02-2011, 16:52
il DataSet é un db relazionale che puó essere serializzato in xml

PGI-Bis
03-02-2011, 17:11
Ah ecco, allora è meglio WebRowSet. C'è un WebRowSetImpl nel jre. Dopo averlo creato:

WebRowSet set = new WebRowSetImpl();

o gli ficchi dentro il risultato di una query (un ResultSet) con popupulate e poi scrivi l'xml su un file oppure scrivi direttamente il resultset in xml usando il metodo write che accetta un ResultSet come argomento.

mone.java
03-02-2011, 23:47
Grazie mille a tutti!!! Proverò entrambe le soluzioni!! A dire il vero la prova con DOM l'avevo già fatta e funziona... WebRowSet l'avevo trovato e però non capivo come utilizzarlo!!! Grazie ancora!!

mone.java
02-03-2011, 14:42
Ciao grazie ancora per le risposte... MA volevo chiedere riguardo al webRowSet come faccio ad utilizzarlo senza appoggiarmi ad un database esistente... In .NET il DataSet funziona esattamente come database senza appoggiarsi (apparentemente) a nulla di esterno.... Non so se mi spiego...

myData.Namespace = "Servizio"
myData.Tables.Add("InfoPC", "InfoPC")
myData.Tables("InfoPC").Columns.Add("Colonna")
myData.Tables("InfoPC").Rows.Add("dasaafaf")
myData.Tables("InfoPC").Rows.Add("ewfaweg")

Questo è il codice VB.....

banryu79
02-03-2011, 15:48
MA volevo chiedere riguardo al webRowSet come faccio ad utilizzarlo senza appoggiarmi ad un database esistente... In .NET il DataSet funziona esattamente come database senza appoggiarsi (apparentemente) a nulla di esterno.... Non so se mi spiego...

Sì, ti spieghi.
DataSet fa parte di ADO.NET (http://msdn.microsoft.com/en-us/library/h43ks021.aspx).
Non esiste un "corrispettivo" Java.

Se vogliamo vedere DataSet come una sorta di in-memory database, allora lato piattaforma Java hai un tot di alternative.
Incluso nel JDK versione 6 trovi JavaDB, un database relazionale che supporta diverse modalità di utlizzo, tra cui quella embeded.
Esistono poi i prevalent systems, per Java ad esempio c'è space4j (http://www.space4j.org/)(un articolo, vecchiotto (http://www.infoq.com/news/2008/09/space4j)).
Che io sappia non ci sono altre alternative.