3

我试图在 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 说参数是错误的,因为它是一个字符串。我该如何告诉他这是一个文件?

4

1 回答 1

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;
             }
         }
     }
于 2012-11-05T16:30:35.343 回答