Potrebno mi je resenje za prebacivanje podataka iz XML fajla u tabele MySQL.
Problem je u tome sto XML fajl u sebi sadrzi podatke nekoliko tabela:
XML:
Code:
<?xml version="1.0" standalone="yes"?>
<Sifarnici xmlns="">
<Tabela1>
<ID_Tabela1>1</ID>
<Naziv>NN</Naziv>
</Tabela1>
<Tabela2>
<ID_Tabela2>1</ID>
<Kolicina>NN</Kolicina>
</Tabela2>
</Sifarnici>
<?xml version="1.0" standalone="yes"?>
<Sifarnici xmlns="">
<Tabela1>
<ID_Tabela1>1</ID>
<Naziv>NN</Naziv>
</Tabela1>
<Tabela2>
<ID_Tabela2>1</ID>
<Kolicina>NN</Kolicina>
</Tabela2>
</Sifarnici>
Naravno ovo je samo skracena verzija. Prava datoteka sadrzi i po 100k unosa sa po 3 i vise tabela.
Za sada sam uspeo da pronadjem nacin da ucitam ceo XML i prebacim u bazu po sistemu "1 na 1" ali ovo resenje radi samo za XML sa jednom tabelom:
Code:
mojDSDataSet eDS = (mojDSDataSet)this.FindResource("mojDS");
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "XML Files|*.xml";
dlg.Title = "Select a XML File";
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
mojaTabelaTableAdapter TA = new mojaTabelaTableAdapter();
TableAdapterManager manager;
manager = new TableAdapterManager();
manager.mojaTabelaTableAdapter = TA;
DataSet fakeDS = new DataSet();
DataTable dt = null;
try
{
fakeDS.ReadXml(dlg.FileName);
dt = fakeDS.Tables[0].Copy();
TA.DeleteQuery();
eDS.mojaTabela.Merge(dt);
manager.mojaTabelaTableAdapter.Update(eDS.mojaTabela);
MessageBox.Show("Učitavanje završeno.");
}
catch (Exception error)
{
MessageBox.Show("GRESKA: " + error.Message);
}
}
mojDSDataSet eDS = (mojDSDataSet)this.FindResource("mojDS");
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "XML Files|*.xml";
dlg.Title = "Select a XML File";
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
mojaTabelaTableAdapter TA = new mojaTabelaTableAdapter();
TableAdapterManager manager;
manager = new TableAdapterManager();
manager.mojaTabelaTableAdapter = TA;
DataSet fakeDS = new DataSet();
DataTable dt = null;
try
{
fakeDS.ReadXml(dlg.FileName);
dt = fakeDS.Tables[0].Copy();
TA.DeleteQuery();
eDS.mojaTabela.Merge(dt);
manager.mojaTabelaTableAdapter.Update(eDS.mojaTabela);
MessageBox.Show("Učitavanje završeno.");
}
catch (Exception error)
{
MessageBox.Show("GRESKA: " + error.Message);
}
}
Aplikacija na kojoj radim bi trebalo da omoguci korisnicima ucitavanje XML fajlova na dnevnom nivou (na zahtev korisnika).
Baza koju koristim je MySQL 5.5 i VisualStudio2010.
Hvala