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:
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");