附加新的XElement会将整个XML添加到流中的现有xml

时间:2013-09-30 01:53:23

标签: xml linq linq-to-xml xelement isolatedstoragefile

我将现有的XML存储在InternalFielStorage中作为..

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

我试图在“作者”节点下附加一个“标题”节点但是保存的时候,我看到一个完全新的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附加到现有XML? 2.如何使“标题”标签位于&lt;“作者姓名=”Sam“&gt;标签下?

提前致谢。

1 个答案:

答案 0 :(得分:1)

加载流时,位置设置为文件的最后一个字节 - 您需要在保存文件之前重置位置。

使用

执行此操作
myStream.Position = 0;
_xDoc.Save(myStream);

请参阅文档here