import data from xml into database

送分小仙女□ 提交于 2019-12-25 01:09:39

问题


i would like to import data into my database through an xml file:

var doc = XDocument.Load(XMLFile);
var nodes = from e in doc.Descendants("Person")
                    where e.Element("PersonID").Value == "1"
                    select e;

The person table has same structure as the data from nodes. Is it handy to use entity framework/linq-to-xml ?


回答1:


If the XML's format is right - i.e. if it uses the same format that the DataSet uses - you can just read it using DataSet.ReadXml() and then use all of the normal ADO tools for inserting the data into your database. Though it really helps if you've actually generated the XML from a DataSet in the first place and thus have a schema for ReadXml to use, because that resolves a lot of data type conversion issues that you'd otherwise have to take care of explicitly.




回答2:


I don't know what you mean by "handy", but it is certainly possible.

You can map the XElement nodes to your LINQtoSQL/EF-generated objects quite easily, if the schemas match.

Your above code should result in an IEnumerable<XElement> with the XName "Person",

so from there you just need to do something like

  IEnumerable<Person> people = nodes.Select(xe => new Person { 
                          PersonID = int.Parse(xe.Element("PersonID").Value), 
                          OtherProperty = xe.Element("OtherProperty").Value
                                 });

You will need to do some conversions like the int.Parse() for some datatypes, because XElement.Value returns a string.

Then to save it to the database, let's assume MyDataContext is a LINQ to SQL generated DataContext object with a property People that is a Table<Person>. All you have to do is:

  MyDataContext db = new MyDataContext();
  db.People.InsertAllOnSubmit(people);
  db.SubmitChanges();


来源:https://stackoverflow.com/questions/5535270/import-data-from-xml-into-database

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!