XML to BD

maevacmoi Messages postés 44 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 1 décembre 2003 - 22 oct. 2003 à 14:53
gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 - 25 oct. 2003 à 03:40
Hello !

Je rencontre une problème lorsque j'essai d'extraire des données provenant d'un fichier XML, pour les insérer dans une base de données. En fait je voudrais pouvoir récupérer chaque enregistrement sous la forme "champ1, champ2, champ3" pour pouvoir les insérer facilement (insert into ...)

voici mon xml test :
----------------------

<mesDonnees>
<enregistrement>
<nbhomme>31</nbhomme>
<nbfemme>27</nbfemme>
<nbanimal>3</nbanimal>
</enregistrement>
<enregistrement>
<nbhomme>2</nbhomme>
<nbfemme>4</nbfemme>
<nbanimal>6</nbanimal>
</enregistrement>
</mesDonnees>

mon code C# qui ne me donne
pas du tout ce que je veux :
-----------------------------------

XmlDocument doc = new XmlDocument();
doc.Load("c:\\fichier.xml");
XmlNode node, node2;
node = doc.SelectSingleNode("//mesDonnees/enregistrement");
string data="";
while(node != null)
{
node2 = doc.SelectSingleNode("//mesDonnees/enregistrement/nbhomme");
data += node2.InnerText.ToString() + ",";
node2 = doc.SelectSingleNode("//mesDonnees/enregistrement/nbfemme");
data += node2.InnerText.ToString() + ",";
node2 = doc.SelectSingleNode("//mesDonnees/enregistrement/nbanimal");
data += node2.InnerText.ToString() + ",";
node = node.NextSibling;
}

return data;

Est-ce que qqun pourrait maider ?!?
Merci pour votre aide
Paul

3 réponses

Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010
23 oct. 2003 à 10:07
essaye avec un dataset (il existe une methode interessante pour toi, unn truc du style loadxml ...
0
maevacmoi Messages postés 44 Date d'inscription mercredi 1 octobre 2003 Statut Membre Dernière intervention 1 décembre 2003
24 oct. 2003 à 11:30
solution trouvée ! ;-)

// Traitement sur noeud - chargement des données
XmlDocument doc = new XmlDocument();
doc.Load(fichierXML);
XmlNode node;
node = doc.SelectSingleNode("//mesDonnees/enregistrement");
// recherche de la racine
XmlNodeList racine = doc.ChildNodes ;
string result = "";//racine.Count.ToString() ;
// recherche du premier <enregistrement>
XmlNodeList enregistrement = racine[0].ChildNodes ;
for(int i=0; i<enregistrement.Count ; i++)
{
XmlNodeList valeur = enregistrement[i].ChildNodes ;
for (int j=0; j<valeur.Count ; j++)
{
if(j == valeur.Count-1)
{
result += valeur[j].InnerText.ToString();
}
else
{
result += valeur[j].InnerText.ToString();
result += ",";
}
}

// INSERTION DATAS RESULT
query.CommandText = "INSERT INTO ResultatRequete" +
"(" + champs + ")" + "VALUES " + "("+ result +")";

@+
0
gg00xiv Messages postés 656 Date d'inscription mercredi 22 août 2001 Statut Membre Dernière intervention 11 mars 2005 13
25 oct. 2003 à 03:40
DataSet ds = new DataSet();
ds.ReadXml("tonfichier.xml");
string columns= "", values="";

foreach (DataColumn column in ds.Tables[0].Columns)
{
columns += column.ColumnName + ",";
values += ds.Tables[0].Rows[0][column].ToString() + ",";
}

columns = columns.TrimEnd(',');
values = values.TrimEnd(',');

query.CommandText = "INSERT INTO ResultatRequete(" + columns + ") VALUES (" + values + ")";

[Membre du laboratoire .NET de SUPINFO]
0
Rejoignez-nous