[C#]Lecture et Ecriture d'un fichier .xml
Là, y'a un truc que je comprends pas dans mon code.
J'ai une méthode de lecture :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| public MainDataSet LoadData()
{
XmlDocument MyDoc = new XmlDocument();
MainDataSet MyDs = new MainDataSet();
MainDataSet.GlobalDataRow MyRow = MyDs.GlobalData.NewGlobalDataRow();
if(File.Exists("data.xml"))
{
MyDoc.Load("data.xml");
// Récupération des paramètres généraux
MyRow.Product = MyDoc.SelectSingleNode("ExchangeUpdater/GeneralData/SoftWare").InnerText;
MyRow.BasePath = MyDoc.SelectSingleNode("ExchangeUpdater/GeneralData/DataBaseFile").InnerText;
MyRow.CheckBoxClientState = MyDoc.SelectSingleNode("ExchangeUpdater/GeneralData/CheckBoxClientState").InnerText;
MyRow.ListClientPath = MyDoc.SelectSingleNode("ExchangeUpdater/GeneralData/ClientListPath").InnerText;
MyRow.CheckBoxProviderState = MyDoc.SelectSingleNode("ExchangeUpdater/GeneralData/CheckBoxProviderState").InnerText;
MyRow.ListProviderPath = MyDoc.SelectSingleNode("ExchangeUpdater/GeneralData/ProviderListPath").InnerText;
MyRow.Ticks = MyDoc.SelectSingleNode("ExchangeUpdater/GeneralData/Ticks").InnerText;
MyRow.NextUpdate = MyDoc.SelectSingleNode("ExchangeUpdater/GeneralData/NextUpdate").InnerText;
MyDs.GlobalData.AddGlobalDataRow(MyRow);
// Chargement des données clients
for (int i = 0; i < MyDoc.SelectNodes("ExchangeUpdater/Client/Field").Count; i++)
{
MyDs.Client.AddClientRow(MyDoc.SelectNodes("ExchangeUpdater/Client/Field").Item(i).ChildNodes[0].InnerText, bool.Parse(MyDoc.SelectNodes("ExchangeUpdater/Client/Field").Item(i).ChildNodes[1].InnerText), MyDoc.SelectNodes("ExchangeUpdater/Client/Field").Item(i).ChildNodes[2].InnerText);
}
// Chargement des données fournisseurs
for (int i = 0; i < MyDoc.SelectNodes("ExchangeUpdater/Provider/Field").Count; i++)
{
MyDs.Provider.AddProviderRow(MyDoc.SelectNodes("ExchangeUpdater/Provider/Field").Item(i).ChildNodes[0].InnerText, bool.Parse(MyDoc.SelectNodes("ExchangeUpdater/Provider/Field").Item(i).ChildNodes[1].InnerText), MyDoc.SelectNodes("ExchangeUpdater/Client/Field").Item(i).ChildNodes[2].InnerText);
}
}
return MyDs;
} |
Et une méthode d'écriture :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
public bool SaveData(MainDataSet MyDs)
{
XmlDocument MyDoc = new XmlDocument();
if (File.Exists("data.xml"))
{
// Si le fichier existe - Ouverture et vidage
MyDoc.Load("data.xml");
}
else
{
// Si le fichier n'existe pas création
MessageBox.Show("Le fichier de données est corrompu ou inexistant", "Erreur 10", MessageBoxButtons.OK);
return false;
}
// Enregistrement des données globales
MyDoc.SelectSingleNode("ExchangeUpdater/GeneralData/SoftWare").InnerText = MyDs.GlobalData[0].Product;
MyDoc.SelectSingleNode("ExchangeUpdater/GeneralData/DataBaseFile").InnerText = MyDs.GlobalData[0].BasePath;
MyDoc.SelectSingleNode("ExchangeUpdater/GeneralData/CheckBoxClientState").InnerText = MyDs.GlobalData[0].CheckBoxClientState;
MyDoc.SelectSingleNode("ExchangeUpdater/GeneralData/ClientListPath").InnerText = MyDs.GlobalData[0].ListClientPath;
MyDoc.SelectSingleNode("ExchangeUpdater/GeneralData/CheckBoxProviderState").InnerText = MyDs.GlobalData[0].CheckBoxProviderState;
MyDoc.SelectSingleNode("ExchangeUpdater/GeneralData/ProviderListPath").InnerText = MyDs.GlobalData[0].ListProviderPath;
MyDoc.SelectSingleNode("ExchangeUpdater/GeneralData/Ticks").InnerText = MyDs.GlobalData[0].Ticks;
// Enregistrement des données clients
MyDoc.SelectSingleNode("ExchangeUpdater/Client").RemoveAll();
// Récupère les fichiers à enregistrer
for (int i = 0; i < MyDs.Client.Count; i++)
{
if (MyDs.Client[i].Synchronize)
{
XmlNode el = MyDoc.CreateNode(XmlNodeType.Element, "Field", null);
XmlElement element = MyDoc.CreateElement("ExchangeData");
element.InnerText = MyDs.Client[i].ExchangeData;
el.AppendChild(element);
XmlElement element1 = MyDoc.CreateElement("Synchronize");
element1.InnerText = MyDs.Client[i].Synchronize.ToString();
el.AppendChild(element1);
XmlElement element2 = MyDoc.CreateElement("SoftwareData");
element2.InnerText = MyDs.Client[i].SoftwareData;
el.AppendChild(element2);
MyDoc.SelectSingleNode("ExchangeUpdater/Client").AppendChild(el);
}
}
// Enregistrement des données fournisseurs
MyDoc.SelectSingleNode("ExchangeUpdater/Provider").RemoveAll();
// Récupère les fichiers à enregistrer
for (int i = 0; i < MyDs.Provider.Count; i++)
{
if (MyDs.Provider[i].Synchronize)
{
XmlNode el = MyDoc.CreateNode(XmlNodeType.Element, "Field", null);
XmlElement element = MyDoc.CreateElement("ExchangeData");
element.InnerText = MyDs.Provider[i].ExchangeData;
el.AppendChild(element);
XmlElement element1 = MyDoc.CreateElement("Synchronize");
element1.InnerText = MyDs.Provider[i].Synchronize.ToString();
el.AppendChild(element1);
XmlElement element2 = MyDoc.CreateElement("SoftwareData");
element2.InnerText = MyDs.Provider[i].SoftwareData;
el.AppendChild(element2);
MyDoc.SelectSingleNode("ExchangeUpdater/Provider").AppendChild(el);
}
}
MyDoc.Save("data.xml");
return true;
} |
Et bien ça lit bien le fichier lorsque j'appelle ma méthode, mais lorsque j'appelle ma méthode d'écriture il m'annonce que le fichier est inexistant alors que c'est le même que celui que je lis...
Une idée de la conn**e que j'ai faite ??
Merci pour vos réponses