unity xml序列化/反序列化
需要引入命名空间:
using System.IO;
using System.Xml;
using System.Xml.Serialization;
[Serializable] //需要特别注意 添加
public class roots
{
[XmlElement("userName")] //需要特别注意 添加(名字需要喝xml名字一致)
public List<userName> usernamelist;
}
[Serializable] //需要特别注意 添加
public class userName
{
public int id;
public string path;
}
xml文件
<?xml version="1.0" encoding="utf-8"?>
<roots xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<userName name ="Hxx">
<id>0</id>
<path>北京市海淀区</path>
</userName>
<userName name ="Wxx">
<id>1</id>
<path>北京市大兴区</path>
</userName>
<userName name ="Mxx">
<id>2</id>
<path>北京市昌平区</path>
</userName>
</roots>
1.反序列化
XmlDocument document = new XmlDocument();
document.Load(“path”); //加载Xml文件
StringReader sr = new StringReader(document.InnerXml); //创建读文件流
XmlSerializer xmlSerializer = new XmlSerializer(typeof(roots)); //声明Xml序列化对象(roots)实例xmlSerializer
roots root = (roots)xmlSerializer.Deserialize(sr);//反序列化成对象
sr.Close();//关闭文件流
2.序列化 (利用上面反序列化的数据类 root)
(1)通过文件流读取的方式
FileStream fs = new FileStream("path", FileMode.Create, FileAccess.ReadWrite);//选择输出的流文件
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8);//创建写文件流
XmlSerializer serializer = new XmlSerializer(typeof(roots));//声明Xml序列化对象(roots)实例serializer
serializer.Serialize(sw, root);序列化成xml
sw.Close();;//关闭文件流
(2)通过类转二进制获得xml字符串
XmlSerializer xml = new XmlSerializer(typeof(T), type);
MemoryStream memStream = new MemoryStream();
xml.Serialize(memStream, roots);
byte[] bobj = memStream.ToArray();
string xmlString = Encoding.UTF8.GetString(bobj);
memStream.Close();
有不正确地方的欢迎留言指正!!!!

浙公网安备 33010602011771号