Ошибка записи C # в XML - PullRequest
       20

Ошибка записи C # в XML

0 голосов
/ 01 марта 2011

У меня проблемы с записью в мой XML-файл

Вот мой код:

path = test.xml


FileStream READER = new FileStream(path, FileMode.Open,FileAccess.Read,FileShare.ReadWrite);
System.Xml.XmlDocument Template = new System.Xml.XmlDocument();
Template.Load(READER);

//WRITE TO XML

FileStream WRITER = new FileStream(path, FileMode.Open, FileAccess.Write, FileShare.ReadWrite); //Set up the filestream (READER) //
Template.Save(WRITER);

Это работает первый раз, когда я нажимаю кнопку, но затем, если я нажимаю ее снова, я получаюошибка

xmlexception handle Данные на корневом уровне недействительны.Строка 87, позиция 10.

Это потому, что документ XML не закрыт?если да, то как мне это сделать

Пожалуйста, кто-нибудь может мне помочь

***** ОБНОВЛЕНИЕ*****

Теперь я получил его работу.Только для тех, кто может бороться с этим, вот мой новый код:

path = test.xml

using(FileStream READER = new FileStream(path, FileMode.Open,FileAccess.Read,FileShare.ReadWrite))
{
    System.Xml.XmlDocument Template = new System.Xml.XmlDocument();
    Template.Load(READER);

    //WRITE TO XML

    using(FileStream WRITER = new FileStream(path, FileMode.Open, FileAccess.Write, FileShare.ReadWrite))
    {
    Template.Save(WRITER);
    }
}

1 Ответ

6 голосов
/ 01 марта 2011

Каждый раз, когда вы используете API-интерфейсы потоковой передачи, вам необходимо закрыть и утилизировать их.Полезно использовать ключевое слово «using», например:

using (FileStream READER = new FileStream(path, FileMode.Open,FileAccess.Read,FileShare.ReadWrite)){
/* ... your processing here */
}
...