xml文件读取基本方法 LINQ to Xml

Xml文件读取的基本方法:

XmlReader类读取xml数据:

 XmlReader xmlReader = XmlReader.Create("D:/user.xml");//使用静态方法获得对象
 while(xmlReader.Read()) //使用Read函数返回的bool值配合while读取数据
 {
	switch (xmlReader.Name)
	{
	case "user":
		Console.WriteLine();
		//用于判断具有ID属性的首尾节点不会重复读取
		if (xmlReader.MoveToAttribute("ID"))
		{
		//不同等级的节点,读取函数有差别
		Console.WriteLine("第{0}个用户:", xmlReader.ReadContentAsString());
		}
		break;
	case "name":
		Console.WriteLine("姓名:" + xmlReader.ReadElementContentAsString());
		break;
	case "hobbies":
		//用于判断具有子节点的节点是否是头节点,如果不是就跳过
		if (xmlReader.IsStartElement())
		Console.Write("爱好:");
		break;
	case "hobby":
		Console.Write("  " + xmlReader.ReadElementContentAsString());
		break;	
	}
}

代码中操作的xml文件 (此文件中只有一个用户)

<userRoot>
    <user ID="1">
    <name>乔治</name>
    <hobbies>
      <hobby>恐龙</hobby>
      <hobby>泥坑</hobby>
    </hobbies> 	 
    </user>
</userRoot>    

XmlDocument类读取xml数据:

XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load("D:/user.xml");
XmlElement xmlElement = xmlDocument.DocumentElement; 
Console.WriteLine(xmlElement.ChildNodes.Count); //显示比根节点低一级的节点的数目
foreach(XmlNode userNode in xmlElement.ChildNodes)
{
	Console.WriteLine();
	Console.WriteLine("ID:" + userNode.Attributes["ID"].Value);
	foreach(XmlNode item in userNode.ChildNodes)
	{
		switch (item.Name)
		{
			case "name":
				//InnerText读取此节点内的数据(所以要注意区分节点类型)
				Console.WriteLine("name:" + item.InnerText);
				break;
			case "hobbies":
				 Console.Write("hobbies:");
				foreach(XmlNode i in item.ChildNodes)
				{
					Console.Write("  " + i.InnerText);
				}
				break;
		}
	}
}

LINQ to Xml

使用XElement类,它表示一个XML元素,可以使用该类创建元素;更改元素内容;添加、更改或者删除子元素;向元素中添加属性;或以文本格式序列化元素内容;

XElement xElement = XElement.Load("C:/Users/康晨晨/Desktop/user.xml");
var query = from item in xElement.Elements("user")
	    select new
	    { 
		name = item.Element("name").Value,
		 age = item.Element("age").Value,
		sex = item.Element("sex").Value	
	    };
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值