簡體   English   中英

在Silverlight中編輯XML文件不起作用,但為什么?

[英]Editing XML file in Silverlight does not work, but why?

我試圖在Silverlight元素中打開和編輯XML文件,但我無法編輯它。

我的XML文件(Customers.xml)如下所示:

<?xml version="1.0"?>
<customers>
  <customer>Joe</customer>
  <customer>Barrel</customer>
</customers>

而我的C#邏輯:

[...]

XDocument xdoc = XDocument.Load("Customers.xml");
            xdoc.Root.Add(new XElement("customer", "Stephano")); //here I wish it to add Stephano as a customer.
            using (var file = IsolatedStorageFile.GetUserStoreForApplication())
            {
                using (var stream = file.OpenFile("Customers.xml", FileMode.Create))
                {
                    xdoc.Save(stream); //and here I wish it to save it to the file
                }
            }

PopulateCustomersList();

/ \\這里是一個用於顯示XML文件內容的函數,它是:

private void PopulateCustomersList()
        {
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.XmlResolver = new XmlXapResolver();
            XmlReader reader = XmlReader.Create("Customers.xml");
            reader.MoveToContent();

            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element && reader.Name == "customer")
                {
                    //OutputTextBlock.Text = reader.GetAttribute("first");
                    customersList.Items.Add(new ListBoxItem()
                    {
                        Content = reader.ReadInnerXml()
                    });
                }

                if (reader.NodeType == XmlNodeType.EndElement && reader.Name == "customers")
                {
                    break;
                }
            }

            reader.Close();
        }

在我的xaml文件中,我有

<ListBox x:Name="customersList" />

所以它會顯示出來,但問題是只有Joe和Barrel才能顯示,Stephano在哪里?

我從各種教程和論壇得到這個代碼,我不太明白,我知道這可能是奇怪的方式,但我只是無法找到如何做到這一點,我正在嘗試各種各樣的事情。 最有趣的是,我在許多論壇上找到了保存文件的方法,如下所示: xdoc.Save("Customers.xml"); 但我的Visual Studio說參數是錯誤的,因為它是一個字符串。 我該怎么告訴他這是一個文件?

好的:

.Save()保存當前的XDocument,IE它將保存你在這里加載的XML文件

XDocument xdoc = XDocument.Load("Customers.xml");

所以它應該是這樣的(這是編碼沒有任何知識超過你提供的)

XDocument xdoc = XDocument.Load("Customers.xml");
        xdoc.Root.Add(new XElement("customer", "Stephano"));
xdoc.Save();
PopulateCustomersList(xdoc);

private void PopulateCustomersList(XDocument xdoc)
     {
         foreach(XElement in element xdoc.Root.Elements("customer"))
         {
            customersList.Items.Add(new ListBoxItem()
             {
                Content = (string)element;
             }
         }
     }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM