Ciao a tutti,
ho un problema con la scrittura dei record di un database, in un file xml, con un proprio schema.
Sostanzialmente mi interessa evitare che ad ogni esecuzione vengano scritte nel file XML i record del DB già inseriti, stavo pensando di utilizzare un ciclo, solo che non avendo mai avuto a che fare con i file XML non so come impostarlo..
di seguito vi riporto il codice del WebMethod che sto sviluppando:
public void MostraDati()
{
Autovetture rest = new Autovetture();
SqlConnection sqlConn = new SqlConnection(@"Data Source=localhost\sqlexpress;Initial Catalog=Concessionaria;Integrated Security=True");
sqlConn.Open();
DataTable dt = new DataTable();
try
{
SqlCommand sqlComm = new SqlCommand("Select IDAuto,Marca,Modello,Cilindrata,Consumo,PrezzoBase from Auto", sqlConn);
SqlDataAdapter sqldata = new SqlDataAdapter(sqlComm);
sqldata.Fill(dt);
}
catch (Exception)
{
}
sqlConn.Close();
string percorso = Server.MapPath("Let_Dati.xml");//per oltrepassare i permessi
int a= dt.Rows.Count;
XDocument doc = XDocument.Load(percorso);
for (int cont = 0; cont < a;cont++)
{
XElement car = new XElement("auto");
if (dt.Rows.Count > 0)
{
DataRow riga = dt.Rows[cont];
rest.IDAuto = Int32.Parse(riga["IDAuto"].ToString());
rest.Marca = riga["Marca"].ToString();
rest.Modello = riga["Modello"].ToString();
rest.Cilindrata = riga["Cilindrata"].ToString();
rest.Consumo = riga["Consumo"].ToString();
rest.PrezzoBase = riga["PrezzoBase"].ToString();
//scritture file XML
//metodo con Linq to XML
//problema: creare un ciclo per escludere la duplicazione del record...
car.Add(new XComment("Auto" + rest.IDAuto.ToString()), new XAttribute("IDAuto", rest.IDAuto.ToString()),
new XAttribute("Marca", rest.Marca),
new XAttribute("Modello", rest.Modello),
new XAttribute("Cilindrata", rest.Cilindrata),
new XAttribute("Consumo", rest.Consumo),
new XAttribute("PrezzoBase", rest.PrezzoBase));
doc.Root.Add(car);
}
doc.Save("C:\\Users\\Frenk\\Documents\\Visual Studio 2012\\WebSites\\ProvaWebServices\\Let_Dati.xml");
}
//lettura file xml----->ultima soluzione, provare con linq to xml!
//lettura con Linq to xml
XElement xelement = XElement.Load("C:\\Users\\Frenk\\Documents\\Visual Studio 2012\\WebSites\\ProvaWebServices\\Let_Dati.xml");
IEnumerable<XElement> auto = xelement.Elements().Distinct();
foreach (var machine in auto)
{
var x = machine;
System.Diagnostics.Debug.WriteLine(x.Attribute("IDAuto") + " " + x.Attribute("Marca") + " " + x.Attribute("Modello") + " " + x.Attribute("Cilindrata") + " " + x.Attribute("Consumo") + " " + x.Attribute("PrezzoBase"));
System.Console.WriteLine("Ciao");
}
}
ps. per prendere i dati dal DB uso una classe, con la quale l'inserimento dei record nel file XML è più semplice.
quindi vi chiedo se avete qualche soluzione per il mio problema.
grazie in anticipo.