代码之家  ›  专栏  ›  技术社区  ›  wizzardz Nikhil

在C中使用XMLWriter创建大型xml#

  •  2
  • wizzardz Nikhil  · 技术社区  · 14 年前

    我试图使用XMLWriter创建一个包含大量数据的xml,但函数执行时没有任何异常。但是当我打开xml时,发现创建的xml不完整,在中途被破坏。我不知道我做错了什么。XMLWriter有默认大小限制吗?XMLWriter是创建大型xml的最佳方法吗?如果不是,请告诉我创建大型xml的最佳方法是什么?使用XDocument会让我的生活更轻松吗?

    这是我的代码结构(我不能把我的原始代码放在这里!! :( )

    using (//file stream)
    {
         XmlWriter mywriter = new XmlWriter.Create(@"C:\mydata.xml");
           // write start element1
           // write start element2
    
                         while (//not end of file)
                        {
                        switch (entrytype)
                        {
                            Case 1:
                               // create elements
                            Case 2:
                               // create elements
                            so on ....
                        }
                        }
    
           // write end element2
           // write endelement1
    }
    

    XML的大小预计为几百KB。

    请回复。。

    3 回复  |  直到 14 年前
        1
  •  5
  •   Marc Gravell    14 年前

    我怀疑你只是没有正确地关闭文字:

    using (//file stream)
    {
         using(XmlWriter mywriter = new XmlWriter.Create(@"C:\Auditlog.xml")) {
           // write start element1
           // write start element2
    
                         while (//not end of file)
                        {
                        switch (entrytype)
                        {
                            Case 1:
                               // create elements
                            Case 2:
                               // create elements
                            so on ....
                        }
                        }
    
           // write end element2
           // write endelement1
        }
    }
    

    注意额外的 using 结束

    另请注意:xml将 工作 对于大文件,但不是 必要地 最好的巧克力-几百k应该没问题。

        2
  •  3
  •   Darin Dimitrov    14 年前

    XmlWriter 它正是创建大型XML文件的工具,大小限制将由底层流决定,在您的情况下,底层流是文件系统,因此只要您有空闲空间,就应该可以了。

    每次编写start元素时,应确保提供相应的end元素,否则将引发异常。您还没有提供说明问题的完整代码示例,因此无法确定出了什么问题。

    using (var writer = new XmlWriter.Create(@"C:\mydata.xml"))
    {
        // TODO: use the writer here    
    }
    
        3
  •  3
  •   Mazhar Karimi Mazhar Karimi    14 年前
    using (//file stream)
    {
         using(XmlWriter mywriter = new XmlWriter.Create(@"C:\Auditlog.xml")) {
           // write start element1
           // write start element2
    
                         while (//not end of file)
                        {
                        switch (entrytype)
                        {
                            Case 1:
                               // create elements
                            Case 2:
                               // create elements
                            so on ....
                        }
                        }
    
           // write end element2
           // write endelement1
    
           mywriter.Close();
    
        }
    }
    

    几百KB不是那么大!别担心!:)

    当做,

    马扎尔卡里米