locked
请问在wp7中怎么添加xml子节点 RRS feed

  • 问题

  • 我想把数据存储在xml文件中,但是我用下面的方法创建并保存xml文件后第一次添加子节点保存正常,但在次加载xml文件时会报错。报错如下

    Unexpected XML declaration. The XML declaration must be the first node in the document, and no white space characters are allowed to appear before

     

    这是我添加xml节点的方法

     public void AddDiary(NewbieDiary diary)
            {

                using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
                {
                    if (isf.FileExists("DiaryData.xml"))
                    {
                        using (IsolatedStorageFileStream isoStream = new IsolatedStorageFileStream("DiaryData.xml", FileMode.Open, FileAccess.ReadWrite, isf))
                        {
                            XDocument xdoc = XDocument.Load(isoStream);//第二次插入的时候在这报错了!

                            var child = new XElement("Diary",
                                new XElement("ID", diary.ID),
                                new XElement("DateTime", diary.DateTime),
                                new XElement("Weather", diary.Weather),
                                new XElement("Content", diary.Content));
                           
                            xdoc.Root.AddFirst(child);
                            xdoc.Save(isoStream);
                        }
                    }
                    else
                    {
                        using (IsolatedStorageFileStream isoStream = isf.OpenFile("DiaryData.xml", FileMode.OpenOrCreate, FileAccess.Write))
                        {
                            XElement xel = new XElement("NewbieDiary",
                                new XElement("Diary",
                                new XElement("ID", diary.ID),
                                new XElement("DateTime", diary.DateTime),
                                new XElement("Weather", diary.Weather),
                                new XElement("Content", diary.Content))
                                );
                            XDocument doc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"), xel);
                            doc.Save(isoStream);
                        }
                    }
                }

            }

     

    请指点一下,要怎么才可以插入并保存子节点?

    2011年12月20日 15:04

答案

全部回复

  • 你好,

    如果你要向一个xml文档中添加一个节点,首先需要找到你想在其中加入一个节点的那个节点,然后再创建一个新节点,并设置相应的属性值,最后添加。你可以看一看下面链接中的例子:

    http://www.silverlightchina.net/html/zhuantixilie/winphone7/2011/0424/7147_2.html

    希望有所帮助。

    2011年12月21日 6:51
    版主
  • 第二次调用 xdoc.Save(isoStream);时会向文档追加XML文档内容,由于isoStream读取后处于文件结尾。因此会出现两个根元素。你可以尝试覆盖这个文件。

    xdoc.ToString()获取XML文档内容。

    2012年3月2日 1:13