【C#】【XML】C#获取Xml文件的数据并输出至控制台

C#获取Xml文件的数据并输出至控制台

Xml文件如下

这是用DataTable.WriteXml方法获取的

<?xml version="1.0" standalone="yes"?>
<Students>
  <Table>
    <Id>150</Id>
    <Name>李四</Name>
    <Sex></Sex>
    <Age>26</Age>
  </Table>
  <Table>
    <Id>154</Id>
    <Name>李四</Name>
    <Sex></Sex>
    <Age>26</Age>
  </Table>
  <Table>
    <Id>164</Id>
    <Name></Name>
    <Sex></Sex>
    <Age>28</Age>
  </Table>
  <Table>
    <Id>165</Id>
    <Name></Name>
    <Sex></Sex>
    <Age>21</Age>
  </Table>
  <Table>
    <Id>168</Id>
    <Name>王超</Name>
    <Sex></Sex>
    <Age>22</Age>
  </Table>
  <Table>
    <Id>169</Id>
    <Name>张三</Name>
    <Sex></Sex>
    <Age>56</Age>
  </Table>
  <Table>
    <Id>170</Id>
    <Name></Name>
    <Sex></Sex>
    <Age>22</Age>
  </Table>
  <Table>
    <Id>171</Id>
    <Name>刘YI</Name>
    <Sex></Sex>
    <Age>28</Age>
  </Table>
  <Table>
    <Id>172</Id>
    <Name>李三四</Name>
    <Sex></Sex>
    <Age>22</Age>
  </Table>
  <Table>
    <Id>173</Id>
    <Name></Name>
    <Sex></Sex>
    <Age>26</Age>
  </Table>
</Students>

程序代码如下

using System;
using System.Collections.Generic;
using System.Data;
using System.Xml;

namespace demo2
{
    class Program
    {
        static void Main(string[] args)
        {
            List<Student> stuList = new List<Student>();
            XmlDocument doc = new XmlDocument();
            doc.Load(@"D:\abk.xml");//加载xml文档
            XmlNode sn = doc.FirstChild;//根节点
            XmlNodeList sList = sn.ChildNodes;//Student节点的集合
            foreach(XmlNode stuNode in sList)
            {
                XmlNodeList filedList = stuNode.ChildNodes;
                Student stu = new Student();
                foreach (XmlNode filedNode in filedList)
                {
                    if (filedNode.Name == "Id")
                        stu.Id = int.Parse(filedNode.InnerText);//节点之间的值强制转换后,赋给stu.Id
                    else if (filedNode.Name == "Name")
                    {
                        stu.Name = filedNode.InnerText;
                    }
                    else if (filedNode.Name == "Sex")
                        stu.Sex = filedNode.InnerText;
                    else
                        stu.Age = int.Parse(filedNode.InnerText);
                }
                stuList.Add(stu);
            }
            foreach(Student item in stuList)
            {
                Console.WriteLine(item);
            }
            Console.ReadKey();
        }
    }
}

运行之后发现怎么都无法输出Xml文件中的内容

调试发现第一个foreach一直无法执行(直接被跳过)—无法读取Xml文件?

由于要读取根节点,就想着可不能是根节点未被读到

于是删除了Xml文件中的一段<?xml version=“1.0” standalone=“yes”?>

再次运行,正常输出

150李四男26
154李四男26
164王女28
165张女21
168王超男22
169张三男56
170董男22
171刘YI男28
172李三四男22
173李女26

拓展:int.Parse()

作用:数据转换,将数据强制转换为int类型

(int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别

Convert.ToInt32 与 int.Parse 较为类似,实际上 Convert.ToInt32 内部调用了 int.Parse:

Convert.ToInt32 参数为 null 时,返回 0;
int.Parse 参数为 null 时,抛出异常;

Convert.ToInt32 参数为 “” 时,抛出异常;
int.Parse 参数为 “” 时,抛出异常;

Convert.ToInt32 可以转换的类型较多;
int.Parse 只能转换数字类型的字符串。
int.TryParse 与 int.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0。

猜你喜欢

转载自blog.csdn.net/unclebober/article/details/86308449