84 votes

Création de fichier XML Utilisation de XDocument en C #

J'ai une liste (Liste <chaîne>) "sampleList" qui contient

 Data1
Data2
Data3...
 

Comment créer un fichier XML en utilisant XDocument en itérant les éléments de la liste dans c sharp.

La structure du fichier est comme

 <file>
   <name filename="sample"/>
   <date modified ="  "/>
   <info>
     <data value="Data1"/> 
     <data value="Data2"/>
     <data value="Data3"/>
   </info>
</file>
 

Maintenant, j'utilise XmlDocument pour le faire

Exemple

         List<string> lst;
        XmlDocument XD = new XmlDocument();
        XmlElement root = XD.CreateElement("file");
        XmlElement nm = XD.CreateElement("name");
        nm.SetAttribute("filename", "Sample");
        root.AppendChild(nm);
        XmlElement date = XD.CreateElement("date");
        date.SetAttribute("modified", DateTime.Now.ToString());
        root.AppendChild(date);
        XmlElement info = XD.CreateElement("info");
        for (int i = 0; i < lst.Count; i++) 
        {
            XmlElement da = XD.CreateElement("data");
            da.SetAttribute("value",lst[i]);
            info.AppendChild(da);
        }
        root.AppendChild(info);
        XD.AppendChild(root);
        XD.Save("Sample.xml");
 

aidez-moi s'il vous plaît à le faire

193voto

Jon Skeet Points 692016

LINQ to XML permet d’être beaucoup plus simple, grâce à trois fonctionnalités:

  • Vous pouvez construire un objet sans connaître le document dont il fait partie
  • Vous pouvez construire un objet et fournir les enfants comme arguments
  • Si un argument est itérable, il sera itéré sur

Donc, ici, vous pouvez simplement faire:

 List<string> list = ...;

XDocument doc =
  new XDocument(
    new XElement("file",
      new XElement("name", new XAttribute("filename", "sample")),
      new XElement("date", new XAttribute("modified", DateTime.Now)),
      new XElement("info",
        list.Select(x => new XElement("data", new XAttribute("value", x)))
      )
    )
  );
 

J'ai utilisé cette disposition de code délibérément pour que le code lui-même reflète la structure du document.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X