XmlDocument:: Сохраните (), добавляет xml в файле

Я хочу сохранить единственный объект XMLDocument в классе и позволить методам внести изменения в него и сохранить его.

    using (FileStream fs = new FileStream(@"D:\Diary.xml", 
            FileMode.Open, FileAccess.ReadWrite, FileShare.Read))
    {
                        XmlDocument xmlDoc = new XmlDocument();
                        xmlDoc.Load(fs);

                        .... make some changes here

                        xmlDoc.Save(fs);
    }

Вышеупомянутый код делает две копии структуры XML в файле.

6
задан A9S6 25 February 2010 в 10:57
поделиться

4 ответа

Попробуйте

fs.SetLength(0);

прежде чем сохранить вызов

3
ответ дан 17 December 2019 в 04:45
поделиться

В качестве альтернативы даже это сработает ...

        XmlDocument xmlDoc = new XmlDocument( );
        xmlDoc.Load( @"D:\Diary.xml" );

        //.... make some changes here
        XmlText node = xmlDoc.CreateTextNode( "test" );
        xmlDoc.DocumentElement.AppendChild( node );

        xmlDoc.Save( @"D:\Diary.xml" );
0
ответ дан 17 December 2019 в 04:45
поделиться

Кажется немного странным, что fs.Position из решения Foole не работает.

Эквивалентом может быть

fs.Seek(0, SeekOrigin.Begin);

Альтернатива

вместо использования того же потока файлов:

            //OrigPath is the path you're using for the FileReader

            System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(OrigPath);
            xmlDoc.Save(writer);
            writer.Close();
0
ответ дан 17 December 2019 в 04:45
поделиться

Добавить:

fs.Position = 0;

перед вызовом Сохранить.

2
ответ дан 17 December 2019 в 04:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: