保存xml文件Windows phone 7
问题描述:
如何保存xml文件(代码)? 大家好。我可以读取XML文件,但我无法保存XML文件: 样品: 类主题:保存xml文件Windows phone 7
public class Subject
{
public int Id
{
get;
set;
}
public Subject()
{}
public string Name
{
get;
set;
}
public string Number
{
get;
set;
}
}
类学生:
public class Student
{
public string Id
{
get;
set;
}
public Student()
{}
public string Name
{
get;
set;
}
public string IconURI
{
get;
set;
}
public List<Subject> Subjects
{
get;
set;
}
}
MainPage.xaml.cs中:
public partial class MainPage : PhoneApplicationPage
{
public MainPage()
{
InitializeComponent();
}
public List<Student> Students
{
get;
set;
}
}
加载文件xml:
private void LoadXML()
{
Uri uri = new Uri("/DemoWP7;component/Save.xml", UriKind.Relative);
StreamResourceInfo xml = App.GetResourceStream(uri);
XDocument doc = XDocument.Load(xml.Stream);
XElement menu = doc.Descendants("menu").First();
Students = (from student in menu.Descendants("student")
select new Student()
{
Id = student.Attribute("id").Value,
Name = student.Attribute("name").Value,
IconURI = student.Attribute("icon").Value,
Subjects = (from subject in student.Descendants("subject")
select new Subject()
{
Name = subject.Attribute("name").Value,
Number = subject.Attribute("number").Value,
}).ToList<Subject>()
}).ToList<Student>();
}
我需要保存文件.XML同这个,那个的loadXML()
<?xml version="1.0" encoding="utf-8" ?>
<menu>
<student id="group1" name="Team A" icon="Images/Team-A.png">
<subject name="Math"
number="72">
</subject>
<subject name="Art"
number="85">
</subject>
</student>
<student id="group2" name="Team D" icon="Images/Team-D.png">
<subject name="History"
number="69">
</subject>
</student>
我如何保存XML文件(代码)后?
答
出于安全原因,每个应用程序都有自己的文件位置 - 隔离存储。所以,如果你要保存的文件,你应该做这样的事情:
using(var appStorage = IsolatedStorageFile.GetUserStoreForApplication())
using(var file = appStorage.OpenFile("YourFileName.xml", FileMode.OpenOrCreate))
using(var writer = new StreamWriter(file))
{
writer.Write("Your data");
}
答
你有没有考虑使用设g XmlSerializer类,并用各种属性上的属性标记Subject类?它会让你的代码更简单 - 一个simple example can be found here。 (并且为了保存Xml文件,您需要将它写入IsolatedStorage以供您的特定应用程序实例使用,如果您执行快速谷歌或查看其他答案,您会发现一堆样本)