代码之家  ›  专栏  ›  技术社区  ›  Julius F

重新分配XmlDocument

  •  1
  • Julius F  · 技术社区  · 14 年前

    我用 XmlDocument 要加载每个XML文件,现在我的问题是,是否可以对所有文件使用一个XmlDocument实例?

    filePath = "Assets/Units/";
            // Get all files
            string [] files = GetAllFiles(filePath);
            // And iterate through them
            xFile = new XmlDocument(); // create xFile once
            foreach (string file in files)
            {
                xFile = new XmlDocument(); // or create it each time a new file must be opened / parsed?
                // do something
            }
    
    3 回复  |  直到 14 年前
        1
  •  4
  •   Jon Skeet    14 年前

    我想是的 清洁剂 犯罪嫌疑人 这是可行的,但在我看来更难推理。如果引用现有实例“泄漏”到代码中的其他地方,则内容将突然发生变化,可能是意外的。

    (另外,如果您使用的是.NET3.5或更高版本,我会强烈考虑使用LINQtoXML。。。它通常是一个更令人愉快的API。)

        2
  •  2
  •   Dirk Vollmar    14 年前

    一般来说,创建一个新的 XmlDocument 每个文件的实例。除非你遇到任何性能/内存问题,否则我不会这么做 . 但是,如果在优化之前遇到问题,请先使用探查器,这将显示实际问题所在。

    foreach (string file in GetAllFiles("Assets/Units/"))
    {
        XmlDocument xFile = new XmlDocument(); 
        xFile.Load(file);
    
        // do something
    }
    

    1 XML文档 因为加载新文档会分配新的内存。

        3
  •  2
  •   Nick Jones    14 年前

    如果您关心性能,并且不更新XML文件,那么可以考虑使用XPathDocument而不是XmlDocument。