有XML文档中出现错误(0,0)反序列化过程 [英] There is an error in XML document (0, 0) during deserialization

查看:172
本文介绍了有XML文档中出现错误(0,0)反序列化过程的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有以下代码为XML序列化。

 公共类FormSaving 
{
私人串专业;

公共字符串Majorversion
{
获得;

组;

}
}



私人无效SaveButton_Click(对象发件人,RoutedEventArgs E)
{
串savepath;
SaveFileDialog DialogSave =新SaveFileDialog();
//默认文件扩展名
DialogSave.DefaultExt =TXT
//可用的文件扩展名
DialogSave.Filter =XML文件(*的.xml)| *的.xml |所有文件| *。*(*。*)。
//如果用户没有
DialogSave.AddExtension = TRUE添加一个扩展;
//恢复所选目录,下一次
DialogSave.RestoreDirectory = TRUE;
//对话框的标题
DialogSave.Title =你想去哪儿来保存文件?
//启动目录
DialogSave.InitialDirectory = @C:/;
DialogSave.ShowDialog();
savepath = DialogSave.FileName;
DialogSave.Dispose();
DialogSave = NULL;

FormSaving ABC =新FormSaving();
abc.Majorversion = MajorversionresultLabel.Content.ToString();
使用(流savestream =新的FileStream(savepath,FileMode.Create))
{

XmlSerializer的序列化=新的XmlSerializer(typeof运算(FormSaving));
serializer.Serialize(savestream,ABC);
}



}


私人无效LoadButton_Click(对象发件人,RoutedEventArgs E)
{

$ b $流b checkStream = NULL;
Microsoft.Win32.OpenFileDialog DialogLoad =新Microsoft.Win32.OpenFileDialog();
DialogLoad.Multiselect = FALSE;
DialogLoad.Filter =XML文件(*的.xml)| *的.xml |所有文件| *。*(*。*)。
如果((布尔)DialogLoad.ShowDialog())
{

{
如果((checkStream = DialogLoad.OpenFile())!= NULL)
{
loadpath = DialogLoad.FileName;
checkStream.Close();
}
}
赶上(异常前)
{
System.Windows.MessageBox.Show(错误:无法从磁盘中读取文件原来的错误: + ex.Message);
}
}
,否则
{
System.Windows.MessageBox.Show(问题发生,请稍后再试);
}

FormSaving ABC;
使用(流loadstream =新的FileStream(loadpath,FileMode.Create))
{
XmlSerializer的序列化=新的XmlSerializer(typeof运算(FormSaving));
ABC =(FormSaving)serializer.Deserialize(loadstream);

}

MajorversionresultLabel.Content = abc.Majorversion;
}

当我按下SaveButton,我label.content被保存到XML文件。然而,当我按下Load按钮加载该XML文件,我得到的错误有XML文档中的错误(0,0)。我去开我的xml文件按Load按钮后,它变成空白,一切都得到了清除。谁能帮我解决这个Load按钮错误?


解决方案

确定解决的,

 使用(流loadstream =新的FileStream(loadpath,FileMode.Open))
{
XmlSerializer的序列化=新的XmlSerializer(typeof运算(FormSaving));
ABC =(FormSaving)serializer.Deserialize(loadstream);

}



应该已经FileMode.Open FileMode.Create <代替/ p>

i have the following code to for xml serialization.

    public class FormSaving
    {
        private string major;

        public string Majorversion
        {
            get;

            set;

        }
    }



    private void SaveButton_Click(object sender, RoutedEventArgs e)
    {
        string savepath;
        SaveFileDialog DialogSave = new SaveFileDialog();
        // Default file extension
        DialogSave.DefaultExt = "txt";
        // Available file extensions
        DialogSave.Filter = "XML file (*.xml)|*.xml|All files (*.*)|*.*";
        // Adds a extension if the user does not
        DialogSave.AddExtension = true;
        // Restores the selected directory, next time
        DialogSave.RestoreDirectory = true;
        // Dialog title
        DialogSave.Title = "Where do you want to save the file?";
        // Startup directory
        DialogSave.InitialDirectory = @"C:/";
        DialogSave.ShowDialog();
        savepath = DialogSave.FileName;
        DialogSave.Dispose();
        DialogSave = null;

        FormSaving abc = new FormSaving();
        abc.Majorversion = MajorversionresultLabel.Content.ToString();
        using (Stream savestream = new FileStream(savepath, FileMode.Create))
        {

                XmlSerializer serializer = new XmlSerializer(typeof(FormSaving));
                serializer.Serialize(savestream, abc);
        }



    }


    private void LoadButton_Click(object sender, RoutedEventArgs e)
    {


        Stream checkStream = null;
        Microsoft.Win32.OpenFileDialog DialogLoad = new Microsoft.Win32.OpenFileDialog();
        DialogLoad.Multiselect = false;
        DialogLoad.Filter = "XML file (*.xml)|*.xml|All files (*.*)|*.*";
        if ((bool)DialogLoad.ShowDialog())
        {
            try
            {
                if ((checkStream = DialogLoad.OpenFile()) != null)
                {
                    loadpath = DialogLoad.FileName;
                    checkStream.Close();
                }
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message);
            }
        }
        else
        {
            System.Windows.MessageBox.Show("Problem occured, try again later");
        }

        FormSaving abc;
        using (Stream loadstream = new FileStream(loadpath, FileMode.Create))
        {
            XmlSerializer serializer = new XmlSerializer(typeof(FormSaving));
            abc = (FormSaving)serializer.Deserialize(loadstream);

        }

        MajorversionresultLabel.Content = abc.Majorversion;
    }

When i press the SaveButton, my label.content is saved into an xml file. However when i press the load button to load this xml file, i get the error "There is an error in XML document (0, 0)". I went to open my xml file after pressing the load button, it becomes blank and everything got erased. Can anyone help me fix this load button error?

解决方案

ok solved,

using (Stream loadstream = new FileStream(loadpath, FileMode.Open))
        {
            XmlSerializer serializer = new XmlSerializer(typeof(FormSaving));
            abc = (FormSaving)serializer.Deserialize(loadstream);

        }

should have been FileMode.Open instead of FileMode.Create

这篇关于有XML文档中出现错误(0,0)反序列化过程的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆