C#实现Xml反序列化成实体
Xml文件:defualt.xml
<?xml version="1.0" encoding="GBK" standalone="yes" ?>
<parentNodeA>
<nodeA>
<childNodeA>xxx</childNodeA>
<childNodeB>xxx</childNodeB>
<childNodeC>xxx</childNodeC>
</nodeA>
<nodeA>
<childNodeA>xxx</childNodeA>
<childNodeB>xxx</childNodeB>
<childNodeC>xxx</childNodeC>
</nodeA>
</parentNodeA>
对应实体
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization;
namespace Xml反序列化
{
[Serializable]
[XmlRoot("parentNodeA")]//对应Xml文件中的<parentNodeA>节点
public class NodeAList
{
[XmlElement("nodeA")]
public List<ClassNodeA> nodeAList { get; set; }
}
[Serializable]
[XmlRoot("nodeA")]//对应Xml文件中的<nodeA>节点
public class ClassNodeA
{
[XmlElement("childNodeA")]//对应Xml文件中的<childNodeA>节点
public string ChildNodeA { get; set; }
[XmlElement("childNodeB")]
public string ChildNodeB { get; set; }
[XmlElement("childNodeC")]
public string ChildNodeC { get; set; }
}
}
实现反序列化
//$@"{Application.StartupPath}\default.xml //这是获取xml文件
FileStream fs = System.IO.File.Open($@"{Application.StartupPath}\default.xml", FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
string text = sr.ReadToEnd();
//将xml流'text '转换成NodeAList实体
NodeAList xml1 = Function.Deserialize<NodeAList>(text);
int a = xml1.nodeAList.Count();
MessageBox.Show(a.ToString());