通过ForEach将IList转换为XML

通过ForEach将IList转换为XML,xml,linq,foreach,Xml,Linq,Foreach,我试图找到一个很好的例子,说明如何使用ForEach获取列表并将其转换为XML。我想做ForEach的原因是,我可以尝试/抓住每一项,并确保在失败之前处理所有道路。对于文件系统上的解密excel文件来说,这是真的,但是如果我可以通过列表来完成,我想我可以转换它。如果它确实失败了,现在它是一个ForEach,那么我现在就能够创建XML文档,不管发生了什么,也可以记录失败的列和行,即失败的人的名字。然后,我可以检查实际的excel文件并修复问题,然后重新上传该记录 任何帮助都将不胜感激。最终,我们将

我试图找到一个很好的例子,说明如何使用ForEach获取列表并将其转换为XML。我想做ForEach的原因是,我可以尝试/抓住每一项,并确保在失败之前处理所有道路。对于文件系统上的解密excel文件来说,这是真的,但是如果我可以通过列表来完成,我想我可以转换它。如果它确实失败了,现在它是一个ForEach,那么我现在就能够创建XML文档,不管发生了什么,也可以记录失败的列和行,即失败的人的名字。然后,我可以检查实际的excel文件并修复问题,然后重新上传该记录

任何帮助都将不胜感激。最终,我们将通过一个存储过程将这个XML文档推送到SQL server,以执行sp_XML解析,将其插入数据库

下面是我目前的做法,但是如果有一件事情弄糟了,整个文件就无法处理等等

            var xmlDoc = new XDocument(
                   new XDeclaration("1.0", "iso-8859-1", "yes"),
                   new XElement("Package",
                       from str in TheList
                       let fields = str.Split('\t')
                       select new XElement("Record",
                                           new XElement("FileId", FileData.FileId),
                                           new XElement("LineId", (lineId++).ToString())
   )
                                      )
                                 );


return xmlDoc;        

这是我一直在寻找的答案。希望它能帮助别人

http://forums.asp.net/p/2024939/5830279.aspx?p=True&t=635545389391660247

using System;
使用System.Collections.Generic; 使用System.Xml.Linq

命名空间MyTestApplication.UI.TestXMLForEach {

}

public partial class TestXMLForEach : System.Web.UI.Page
{

    TestRepo repo = new TestRepo();

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Write("Start @" + DateTime.Now.ToString());
        Response.Write("<br/>"); Response.Write("<br/>");
        MakeXML();
        Response.Write("<br/>"); Response.Write("<br/>");
        Response.Write("End @" + DateTime.Now.ToString());
    }

    private IList<TestXMLDTO> GetXMLInfo()
    {
        IList<TestXMLDTO> theList = new List<TestXMLDTO>();

        for(int i = 1; i <= 100000; i++)
        {
             theList.Add(new TestXMLDTO 
             { 
                 Id = i, 
                 FirstName = string.Format("FirstName_{0}",i.ToString()),
                 LastName = string.Format("LastName_{0}", i.ToString()),
                 Department = string.Format("Department_{0}", i.ToString()), 
                 Salary = new decimal(27000 + i) 
             });

             System.Diagnostics.Debug.WriteLine(i.ToString());
        }

        return theList;
    }

    private void MakeXML()
    {
        IList<TestXMLDTO> theList = GetXMLInfo();

        XDocument xmlDoc = new XDocument(new XDeclaration("1.0", "iso-8859-1", "yes"));

        XElement package = new XElement("Package");

        foreach (var item in theList)
        {
            XElement record = new XElement("Record");



            XElement id = new XElement("Id", item.Id);
            record.Add(id);

            XElement firstName = new XElement("FirstName", item.FirstName);
            record.Add(firstName);

            XElement lastName = new XElement("LastName", item.LastName);
            record.Add(lastName);

            XElement department = new XElement("Department", item.Department);
            record.Add(department);

            XElement salary = new XElement("Salary", item.Salary);
            record.Add(salary);

            package.Add(record);
        }

        xmlDoc.Add(package);

        xmlDoc.Save(@"C:\XmlDocumentViaForEachAndListCSharp.xml");

    }
}

public class TestXMLDTO
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Department { get; set; }
    public decimal Salary { get; set; }

    public TestXMLDTO()
    {
        Salary = new decimal(27000);
    }
}