Как удалить xmldocument, сохраненный в определенном месте - PullRequest
0 голосов
/ 02 сентября 2010

У меня есть следующий код, где я сохраняю XML-файл в этом конкретном месте, показанном ниже

public bool GetList(string keyword1, string streetname, string lat, string lng, string radius)
{

    XmlDocument xmlDoc=  CreateXML( keyword1,streetname,lat,lng,radius);
    xmlDoc.Save(@"C:\Documents and Settings\Vijay.EKO-03\Desktop\blockseek3-9-2010\Block3.xml");
     return true;

}

Этот файл Block3.xml хранится в папке моего приложения, я ссылаюсь на этот конкретный Block3.xml, используя этот код

function searchLocationsNear() 
{
    var searchUrl = "Block3.xml";
    GDownloadUrl(searchUrl, function(data) {
    var xml = GXml.parse(data);
    var markers = xml.documentElement.getElementsByTagName('marker');
    map.clearOverlays();

Я могу проанализировать этот Block3.xml и отобразить результаты, но моя проблема снова во время второй итерации, когда я пытаюсь сохранить Block3.xml

xmlDoc.Save(@"C:\Documents and Settings\Desktop\blockseek3-9-2010\Block3.xml");

Предыдущий файл Block3.xml заменяется новым и сохраняется в папке приложения. когда я выполняю var searchUrl = "Block3.xml"; он читает первый Block3.xml, а не замененный, может помочь в решении этого кода. Является ли их любой синтаксис для очистки сохраненного файла xmldoc в этой конкретной папке.

1 Ответ

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

Скорее всего, класс GXml сохраняет дескриптор открытого файла. Проверьте документацию: если она реализует IDisposable, оберните ваш код обработки следующим образом:

using ( var xml = GXml.parse(data) )
{
    var markers = xml.documentElement.getElementsByTagName('marker');
    map.clearOverlays();
}

Это также предполагает, что метод parse() - это тот, который фактически загружает и читает файл. Если вы не отпустите дескриптор файла, ваш процесс не будет знать, что в файловой системе есть другая версия. (И другие неприятные вещи могут произойти, в зависимости от того, в каком режиме O / S открыл файл.)

Я надеюсь, что ваш производственный код не будет содержать эти жестко закодированные пути ...?

...