c#将xml格式文档解析成实体类

c#—XML信息读取(将XML格式解析存放到实体类中)

本人菜鸟一个,闲来无事,记录工作所用,解释如有偏差错误,欢迎指正!
准备工作:
使用XmlDocument,需要添加引用:System.Xml.XmlDocument
个人见解:
对于解析Xml文档,我们可以看做是一个一个的对象组成,将根节点看做是一个最大的对象,它的属性就是这个对象的字段,如果它有子节点的话,就可以考虑创建一个列表来存储它的子节点,把这些子节点再看做是一个一个的对象,以此类推,属性看做是字段,子节点看做是对象,存储到父节点的列表中。
主要方法:
Load()和LoadXml()
简单解释
1、XmlDocument:
初始化 System.Xml.XmlDocument 类的新实例。
// XmlDocment专门用来解析xml文档的
XmlDocument xmlDoc = new XmlDocument();
2、Load()/LoadXml():
xmlDoc.Load(“skillinfo.txt”);//第一种:选择要加载解析的xml文档的名字
xmlDoc.LoadXml(File.ReadAllText(“skillinfo.txt”));//第二种:传递一个字符串(xml格式的字符串)
3、XmlNode:
表示 XML 文档中的单个节点。
//得到根结点 (xmlnode用来代表一个结点)
XmlNode rootNode = xmlDoc.FirstChild;//获取第一个结点,Xml文档的第一个子节点即根节点
4、XmlNode.Name
获取XmlNode的name名称
5、XmlNode.InnerText
获取或设置节点及其所有子节点的串连值即XmlNode的值
返回结果:
节点及其所有子节点的串连值。
6、XmlNodeList:
表示节点的有序集合。
//得到根结点下面的子节点的有序集合,
XmlNodeList skillNodeList = rootNode.ChildNodes;//获取当前结点下面的所有子节点
7、ChildNodes:
public virtual XmlNodeList ChildNodes { get; },返回值是一个XmlNodeList的集合
XmlNodeList skillNodeList = rootNode.ChildNodes;
获取节点的所有子节点。
返回结果: 一个包含节点的所有子节点的对象。 如果不含有任何子节点,此属性返回一个空 System.Xml.XmlNodeList。
8、Attributes:
public virtual XmlAttributeCollection Attributes { get; }返回值为XmlAttributeCollection类型的一个集合
// 获取 System.Xml.XmlAttributeCollection 包含此节点的属性。
返回结果:
// XmlAttributeCollection 包含节点的属性。 如果节点为 XmlNodeType.Element 类型,则返回该节点的属性。 否则,此属性将返回null。
9、XmlAttributeCollection:
获取具有指定索引的属性。
10、public XmlAttribute this[int i] { get; }
获取具有指定名称的属性。
// 参数:
//name:
//属性的限定名称。
// 返回结果:
//具有指定名称的 System.Xml.XmlAttribute。 如果该属性不存在,此属性返回 null。
Eg:
skill.Lang = fieldNode.Attributes[0].Value;
11、public XmlAttribute this[string name] { get; }
获取具有指定的本地名称和命名空间统一资源标识符 (URI) 的属性。
// 参数:
//localName:
//属性的本地名称。
//namespaceURI:
//属性的命名空间 URI。
// 返回结果:
//System.Xml.XmlAttribute 具有指定的本地名称和命名空间 URI。 如果该属性不存在,此属性返回 null。
Eg:
playerstaQuarter.ReciveFouls = Int32.Parse(col[“ReciveFouls”].Value);
12、Attribute.Value
//获取或设置节点的值。
// 返回结果:
//返回的值取决于节点的 System.Xml.XmlNode.NodeType。 有关 XmlAttribute 节点,此属性是属性的值。
// 异常:
//T:System.ArgumentException:
//该节点是只读的而 set 操作称为

简单案例

以对象为切入点,一层套一层建立起联系,方便后续调用获取

Xml格式:

<a>
	<ID>1</ID>
	<Name>jack</Name>
	<Address>
		<Province>浙江</Province>
		<City>
			<Name>杭州</Name>
			<Code>310000</Code>
		</City>
	</Address>
	<Hobby>
		<Category>运动</Category>
		<Name>篮球</Name>
	</Hobby>
	<Hobby>
		<Category>音乐</Category>
		<Name>小提琴</Name>
	</Hobby>
</a>

C#实体类代码:

public class a
{
    
    
	public int ID {
    
     get; set; }

	public string Name {
    
     get; set; }

	public Address Address {
    
     get; set; }

	public Hobby Hobby {
    
     get; set; }
}
public class Address
{
    
    
	public string Province {
    
     get; set; }

	public City City {
    
     get; set; }
}
public class City
{
    
    
	public string Name {
    
     get; set; }

	public string Code {
    
     get; set; }
}
public class Hobby
{
    
    
	public string Category {
    
     get; set; }

	public string Name {
    
     get; set; }
}

创建LoadXml()方法读取xml数据,存放到实体类

public void LoadXml()
{
    
    
	XmlDocument xmlDoc = new XmlDocument();
	//取到xml数据
    xmlDoc.Load("Demo.xml");//这是一个demo文件,需要将它放到项目中,然后设置如果较新则复制
	//然后根据节点获取对应的值,并且存放到对应的实体类中
	XmlNode aNodeNode = xmlDoc.FirstChild;//获取到第一个子节点,也就是节点a
}

猜你喜欢

转载自blog.csdn.net/qq_37179591/article/details/105736690
今日推荐