#xml #windows-phone-7 #save
#xml #windows-phone-7 #Сохранить
Вопрос:
Как я могу сохранить XML-файл (код)? Всем привет. Я могу прочитать XML-файл, но не могу сохранить XML-файл: Пример: тема класса :
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-файл (код)?
Ответ №1:
По соображениям безопасности у каждого приложения есть собственное место для хранения файлов — изоляция. Итак, если вы хотите сохранить свой файл, вам следует сделать что-то вроде этого:
using(var appStorage = IsolatedStorageFile.GetUserStoreForApplication())
using(var file = appStorage.OpenFile("YourFileName.xml", FileMode.OpenOrCreate))
using(var writer = new StreamWriter(file))
{
writer.Write("Your data");
}
Ответ №2:
Рассматривали ли вы возможность использования класса XmlSerializer и разметки вашего класса Subject атрибутами различных свойств? Это немного упростит ваш код — простой пример можно найти здесь. (и чтобы сохранить XML-файл, вам нужно записать его в IsolatedStorage для вашего конкретного экземпляра приложения, для которого, если вы быстро погуглите или посмотрите на другие ответы, вы найдете кучу примеров)