в один класс я создаю с кнопкой мыши на XML-документ:Xml Сериализация и писатель
private void buttonCreate_Click(object sender, RoutedEventArgs e)
{
DialogResult result = folderElg.ShowDialog();
if (result == System.Windows.Forms.DialogResult.OK)
{
textBoxPath.Text = folderElg.SelectedPath;
userConfigurePath = folderElg.SelectedPath;
}
XmlDocument toolConfig = new XmlDocument();
XmlNode myRoot;
myRoot = toolConfig.CreateElement("Tool");
toolConfig.AppendChild(myRoot);
toolConfig.Save(@userConfigurePath + "\\config.xml");}
Там у меня нет проблем. Создается папка и файл xml.
Так в другом классе я хочу сериализации объектов в файл XML «config.xml» (переменная userConfigurePath статично в Classe упоминалось выше):
public partial class MainWindow : Window
{
private string inputNewTool = "";
private OpenFileDialog dlg = new OpenFileDialog();
public MainWindow()
{
InitializeComponent();
}
private void buttonAdd_Click(object sender, RoutedEventArgs e)
{
InputDialog input = new InputDialog();
input.ShowDialog();
inputNewTool = input.enteredTxt;
if (inputNewTool != null)
{
System.Windows.Forms.MessageBox.Show("Chose the Tool's directory");
dlg.DefaultExt = ".txt";
dlg.Filter = "Text documents (.txt)|*.txt";
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Tool tool = new Tool();
tool.Name = inputNewTool;
tool.Path = dlg.FileName;
XmlSerializer serializer = new XmlSerializer(tool.GetType());
StreamWriter writer = new StreamWriter(@Start.userConfigurePath +
"\\config.xml");
serializer.Serialize(writer.BaseStream, tool);
}
}
Результатом является то, что объект ISN 't сохранен в файле config.xml. Зачем?
Редактировать Класс Автомата:
public class Tool
{
public string Name { get; set; }
public string Path { get; set; }
public Tool() { }
}
Второе редактирование:
Я вижу, что я не могу удалить Мануэлю эти папки (после закрытия приложения) с файлом XML, когда он будет создан. Зачем?
Третье редактирование:
я изменил код так:
if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Tool tool = new Tool();
tool.Name = inputNewTool;
tool.Path = dlg.FileName;
XmlSerializer serializer = new XmlSerializer(tool.GetType());
using (var writer = new StreamWriter(@Start.userConfigurePath +
"\\config.xml"))
{
serializer.Serialize(writer.BaseStream, tool);
writer.Close();
}
Теперь первый объект сериализации. Но если я создаю другой инструмент таким же образом, config.xml не принимает его. Только первый инструментарий сериализуется:
<?xml version="1.0"?>
<Tool xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>dffss</Name>
<Path>D:\Users\xxxx\Documents\schulewochenbericht.txt</Path>
</Tool>
Что значит «объект не сохраняется в config.xml»? Вы получили сообщение об ошибке? или Вы получаете неожиданный результат? –
Если я открываю xml-файл, нет объекта с его именем и путем – LittleProgrammer
Является ли ваш класс Tool помеченным с помощью атрибута serializable? – rageit