通过ForEach </object>将IList <object>转换为XML

时间:2014-12-19 02:04:29

标签: xml linq foreach

我试图找到一个很好的例子,说明如何使用ForEach获取List并将其转换为XML。我想做一个ForEach的原因是因为我可以对每个项目进行一次尝试/捕获,并确保在失败之前处理所有道路。这对于文件系统上的解密excel文件来说真的很有用,但是如果我可以通过List来实现它,我想我将能够转换它。如果它确实失败了,现在它就是ForEach,我现在能够制作XML文档,无论是什么,还记录哪些列失败以及哪一行(即失败的人名)。然后我可以检查实际的excel文件并修复问题并重新上传该记录。

任何帮助都会很感激。最后,我们通过存储过程将此XML文档推送到SQL服务器,以执行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;        

1 个答案:

答案 0 :(得分:0)

这是我正在寻找的答案。希望它可以帮助别人!

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);
    }
}

}