关于反序列化XML的有关问题
关于反序列化XML的问题
我将一个对象用XmlSerializer序列化到一个本地文件后,再将其反序列化为对象的时候出错。
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Xml.dll
Additional information: There is an error in XML document (1, 2).
这是我的Person代码
这是我的Main代码
这是我序列化后在本地文件中打开得到的xml文件内容
------解决思路----------------------
你前面序列化保存的文件是 lyk.xml ,后面反序列化打开的是 lyk.soap,确定这个lyk.soap是xml文件么?
------解决思路----------------------
</Person></Person>on>
这个怎么回事?序列化后xml格式不对吧。
我将一个对象用XmlSerializer序列化到一个本地文件后,再将其反序列化为对象的时候出错。
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Xml.dll
Additional information: There is an error in XML document (1, 2).
这是我的Person代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace FirstConsole
{
[Serializable]
public class Person
{
private string _name;
public string Name
{
set
{
this._name = value;
}
get
{
return this._name;
}
}
private int _age;
public int Age
{
set
{
this._age = value;
}
get
{
return this._age;
}
}
private string _address;
public string Address
{
set
{
this._address = value;
}
get
{
return this._address;
}
}
public Person(string _name, int _age, string _address)
{
this.Name = _name;
this.Age = _age;
this.Address = _address;
}
public Person()
{
this.Name = "Sheldon";
this.Age = -1;
this.Address = "NONE";
}
public void PrintInfo()
{
System.Console.WriteLine("姓名:" + this.Name + "\t年龄:" + this.Age + "\t地址:" + this.Address);
}
}
}
这是我的Main代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Data.SqlClient;
using System.Data;
using System.Data.Sql;
using System.Configuration;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization.Formatters.Soap;
using System.Xml.Serialization;
namespace FirstConsole
{
class Program
{
static void Main(string[] args)
{
#region XML
Person lyk = new Person("狗蛋", 26, "重庆市沙坪坝区--Xml");
using (FileStream fs = new FileStream("lyk.xml", FileMode.OpenOrCreate))
{
XmlSerializer xs = new XmlSerializer(typeof(Person));
xs.Serialize(fs, lyk);
}
Console.WriteLine("Serialized in BinaryFormat");
using (FileStream fs = new FileStream("lyk.soap", FileMode.Open))
{
XmlSerializer xs = new XmlSerializer(typeof(Person));
Person lykNew = (Person)xs.Deserialize(fs);
lykNew.PrintInfo();
}
#endregion
}
}
}
这是我序列化后在本地文件中打开得到的xml文件内容
<?xml version="1.0"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Name>狗蛋</Name>
<Age>26</Age>
<Address>重庆市沙坪坝区--Xml</Address>
</Person></Person>on>
------解决思路----------------------
你前面序列化保存的文件是 lyk.xml ,后面反序列化打开的是 lyk.soap,确定这个lyk.soap是xml文件么?
------解决思路----------------------
</Person></Person>on>
这个怎么回事?序列化后xml格式不对吧。