0

我想生成一百万个记录 xml 文件。为此,我有一个示例 xml 文件,其中只有一个值集。使用这个 xml 文件填充随机值一百万次。我创建了一个解决方案,但它非常耗时。我的代码是

try
        {
            label1.Text = "File creation in progress  ...";
            Random rnd = new Random();
            string sStartupPath = Application.StartupPath;
            string sName = "";
            int flag = 0;
            XmlDocument XmlFile = new XmlDocument();
            XmlFile.Load(sStartupPath + @"..\..\..\BankStatement.xml");
            XmlFile.Save(@"C:\XmlData\Bank.xml");
            XmlDocument XmlF = new XmlDocument();
            XmlF.Load(@"C:\XmlData\Bank.xml");
            long k = Convert.ToInt32(textBox1.Text);
            for (int j = 1; j < k; j++)
            {
                XmlTextReader objXmlTextReader = new XmlTextReader(sStartupPath + @"..\..\..\BankStatement.xml");
                while (objXmlTextReader.Read())
                {
                    switch (objXmlTextReader.NodeType)
                    {
                        case XmlNodeType.Element:
                            sName = objXmlTextReader.Name;
                            if (sName == "DataXml")
                            {
                                if (flag == 0)
                                    flag = 1;
                            }
                            break;
                        case XmlNodeType.Text:
                            if (flag == 1)
                            {
                                XmlNodeList elemList = XmlFile.GetElementsByTagName(sName);
                                for (int i = 0; i < elemList.Count; i++)
                                {
                                    if (elemList[i].Name == "Name")
                                        elemList[i].InnerXml = generateNames();
                                    else if (elemList[i].Name == "EmailID")
                                        elemList[i].InnerXml = generatemailids();
                                    else
                                        elemList[i].InnerXml = rnd.Next(500000).ToString();
                                }
                            }
                            break;
                        case XmlNodeType.EndElement:
                            sName = objXmlTextReader.Name;
                            if (sName == "DataXml")
                            {
                                if (flag == 1)
                                    flag = 0;
                            }
                            break;
                    }
                }
                XmlDocument dd = new XmlDocument();
                dd.LoadXml(XmlFile.InnerXml); 
                XmlNodeList node=dd.GetElementsByTagName("Customers");
                XmlDocumentFragment xfrag = XmlF.CreateDocumentFragment();
                xfrag.RemoveAll();
                for (int i = 0; i < 1; i++)
                {
                    xfrag.InnerXml = node[i].InnerXml;                        
                    XmlF.DocumentElement.FirstChild.AppendChild(xfrag);                        
                }

                XmlF.Save(@"C:\XmlData\Bank.xml");

            }

            label1.Visible = false;
            MessageBox.Show("File creation success..!");
        }
        catch (Exception ex)
        {
            label1.Text = "";
            MessageBox.Show("Error Occured");
        }

请给我一个更好的解决方案。

4

2 回答 2

2

我知道编写 XML 的最快方法(没有手动构建 XML 片段)是使用XmlWriter

XmlWriter 类是一个抽象基类,它提供了一种只进、只写、非缓存的方式来生成 XML 流。它可用于构建符合 W3C 可扩展标记语言 (XML) 1.0(第四版)建议和 XML 中的命名空间建议的 XML 文档。

MSDN 有一个关于如何使用抽象 XmlWriter 类的演练。

于 2012-07-02T05:03:19.683 回答
0

要编写大型 XML 文件,您应该使用XmlTextWriter

于 2012-07-02T06:00:31.327 回答