Création de fichier XML à l’aide de XDocument en C #

J’ai un List “sampleList” qui contient

 Data1 Data2 Data3... 

La structure de fichier est comme

          

J’utilise actuellement XmlDocument pour cela.

Exemple:

 List lst; XmlDocument XD = new XmlDocument(); XmlElement root = XD.CreateElement("file"); XmlElement nm = XD.CreateElement("name"); nm.SetAtsortingbute("filename", "Sample"); root.AppendChild(nm); XmlElement date = XD.CreateElement("date"); date.SetAtsortingbute("modified", DateTime.Now.ToSsortingng()); 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"); 

Comment créer la même structure XML avec XDocument?

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

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

Donc, ici, vous pouvez juste faire:

 void Main() { List list = new List { "Data1", "Data2", "Data3" }; XDocument doc = new XDocument( new XElement("file", new XElement("name", new XAtsortingbute("filename", "sample")), new XElement("date", new XAtsortingbute("modified", DateTime.Now)), new XElement("info", list.Select(x => new XElement("data", new XAtsortingbute("value", x))) ) ) ); doc.Save("Sample.xml"); } 

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

Si vous voulez un élément contenant un nœud de texte, vous pouvez le construire en transmettant le texte comme un autre argument de constructeur:

 // Constructs text within element XElement element = new XElement("element", "text within element");