如何读取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 = "1 2 "; 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")); } }