Добавление нового XElement добавляет весь XML к существующему XML в потоке

У меня есть существующий XML, хранящийся в InternalFielStorage как ..

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>
  <Books>
        <Author name="Sam" />
  </Books>
</Root>

Я пытаюсь добавить узел "title" под узлом "Author", но при сохранении я вижу совершенно новый xml, добавленный к существующему xml как ..

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>
    <Books>
        <Author name="Sam" />
    </Books>
</Root>
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>  
    <Books>
        <Author name="Sam" />        
        <Title>Test</Title>
    </Books>
</Root>

Код, который я использую для этого ..

 using (IsolatedStorageFile myStore = IsolatedStorageFile.GetUserStoreForApplication())
  {
     using (IsolatedStorageFileStream myStream = new IsolatedStorageFileStream(App.FileName, FileMode.Open, FileAccess.ReadWrite, myStore))
     {
           XDocument _xDoc = XDocument.Load(myStream);
           XElement srcTree = new XElement("Title", "test");
           _xDoc.Element("Root").Element("Books").Add(new XElement(srcTree));
           _xDoc.Save(myStream);

ВОПРОСЫ:
1. Как мне избежать добавления нового XML к существующему?
2. Как сделать так, чтобы тег "title" находился под тегом ‹" Author name = "Sam"> ?

Заранее спасибо.


person Sam    schedule 30.09.2013    source источник


Ответы (1)


Когда вы загружаете поток, позиция устанавливается на последний байт файла - вам нужно сбросить позицию перед сохранением файла.

Сделайте это с

myStream.Position = 0;
_xDoc.Save(myStream);

См. Документацию здесь

person Jamie - Fenrir Digital Ltd    schedule 30.09.2013