如何读取XML文件并写入List ?

我有一个List ,我已设法写入文件。 现在我正在尝试读取相同的文件并将其写回List 。 有没有办法做到这一点? 任何人都可以帮我开始吗? 会有用吗?

我认为最简单的方法是使用XmlSerializer

 XmlSerializer serializer = new XmlSerializer(typeof(List)); using(FileStream stream = File.OpenWrite("filename")) { List list = new List(); serializer.Serialize(stream, list); } using(FileStream stream = File.OpenRead("filename")) { List dezerializedList = (List)serializer.Deserialize(stream); } 

你可以尝试这个(使用System.Xml.Linq)

 XDocument xmlDoc = XDocument.Load("yourXMLFile.xml"); var list = xmlDoc.Root.Elements("id") .Select(element => element.Value) .ToList(); 

您可以使用LINQ to XML来读取XML文件并将其绑定到List。

http://www.mssqltips.com/sqlservertip/1524/reading-xml-documents-using-linq-to-xml/这个链接有足够的信息。

这是我过去所做的事情; 我希望它有所帮助。 我想你想要完全一样的东西

  public static List MapInfo() { var maps = from c in XElement.Load(System.Web.Hosting.HostingEnvironment.MapPath("/ProjectMap.xml")).Elements("ProjectMap") select c; List mapList = new List(); foreach (var item in maps) { mapList.Add(new ProjectMap() { Project = item.Element("Project").Value, SubProject = item.Element("SubProject").Value, Prefix = item.Element("Prefix").Value, TableID = item.Element("TableID").Value }); } return mapList; } 

一个简单的方法是

 using System; using System.Linq; using System.Xml.Linq; public class Test { static void Main() { string xml = "12"; XDocument doc = XDocument.Parse(xml); List list = doc.Root.Elements("id") .Select(element => element.Value) .ToList(); } } 

如果你正在使用Singleton模式,这里是如何读取XML的!

 public static GenericList Instance { get { XElement xelement = XElement.Load(HostingEnvironment.MapPath("RelativeFilepath")); IEnumerable items = xelement.Elements(); instance = new GenericList(); instance.genericList = new List{ }; foreach (var item in items) { //Get the value of XML fields here int _id = int.Parse(item.Element("id").Value); string _name = item.Element("name").Value; instance.genericList.Add( new GenericItem() { //Load data into your object id = _id, name = _name }); } return instance; } } 

这打开了CRUD可访问性,更新有点棘手,因为它写入xml

  public void Save() { XDocument xDoc = new XDocument(new XDeclaration("Version", "Unicode type", null)); XElement root = new XElement("GenericList"); //For this example we are using a Schema to validate our XML XmlSchemaSet schemas = new XmlSchemaSet(); schemas.Add("", HostingEnvironment.MapPath("RelativeFilepath")); foreach (GenericItem item in genericList) { root.Add( //Assuming XML has a structure as such // //  //  // new XElement("GenericItem", new XElement("name", item.name), new XElement("id", item.id) )); } xDoc.Add(root); //This is where the mentioned schema validation takes place string errors = ""; xDoc.Validate(schemas, (obj, err) => { errors += err.Message + "/n"; }); StringWriter writer = new StringWriter(); XmlWriter xWrite = XmlWriter.Create(writer); xDoc.Save(xWrite); xWrite.Close(); if (errors == "") { xDoc.Save(HostingEnvironment.MapPath("RelativeFilepath")); } }