Переназначение XmlDocument - PullRequest
       7

Переназначение XmlDocument

1 голос
/ 09 сентября 2010

В настоящее время мне приходится перебирать большее количество XML-файлов, и я привязан к Mono (так что никаких новых .NET LINQ и т. Д.).Я использую 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 ]

4 голосов
/ 09 сентября 2010

Я думаю, что будет чище создавать новый экземпляр на каждой итерации.Я бы также объявил переменную внутри цикла.Нет логической связи между документами на каждой итерации, поэтому зачем использовать один и тот же объект.Я подозреваю, что это будет работать, но ИМО сложнее рассуждать.Если вы ссылаетесь на существующий экземпляр, который «просачивается» в другое место вашего кода, его содержимое внезапно изменится, вероятно, неожиданно.рассмотрите возможность использования LINQ to XML ... это более приятный API.)

2 голосов
/ 09 сентября 2010

Если вы беспокоитесь о производительности и не обновляете файлы XML, то стоит рассмотреть возможность использования XPathDocument вместо XmlDocument.

2 голосов
/ 09 сентября 2010

В общем случае создание нового экземпляра XmlDocument для каждого файла не должно быть проблемой. Я бы не поступил иначе, пока у вас не возникнет проблема с производительностью / памятью 1 . Но если у вас возникнут проблемы, прежде чем приступать к оптимизации, используйте профилировщик, и он покажет вам, где именно проблема.

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

    // do something
}

1 Возможно, вы увидите выгоду, например, при повторном использовании больших массивов, но я на самом деле сомневаюсь, что вы увидите преимущество с XmlDocument, так как загрузка нового документа все равно выделит новую память.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...