2012-11-05 47 views
3

我試圖打開和編輯Silverlight元素內的XML文件,但我無法編輯它。在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" /> 

所以它被顯示,但問題是,只有喬和桶獲取要顯示在哪裏是Stephano?我知道這可能是一種奇怪的方式來做到這一點,但我只是不知道如何做到這一點,我試圖各種各樣的東西。最有趣的是,我在很多論壇上找到了一種保存文件的方式,看起來像這樣: xdoc.Save("Customers.xml");但我的Visual Studio說參數是錯誤的,因爲它是一個字符串。我該如何告訴他它是一個文件?

回答

0

好:

.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; 
      } 
     } 
    } 
相關問題