我试图在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说参数是错误的,因为它是一个字符串。我该如何告诉他这是一个文件?
答案 0 :(得分:0)
好的:
.Save()保存当前的XDocument,I.E它将保存您在此处加载的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;
}
}
}