文档库 最新最全的文档下载
当前位置:文档库 › 读取XML数据

读取XML数据

17.2.1 用XmlReader读取XML数据(2)

如示例代码17-2所示,ReadXmlWithReader()方法演示通过XmlReader类读取示例代码17-1所示的UserList.xml数据。首先,通过XmlReader.Create()方法创建一个XmlReader对象reader,然后,通过reader.Read()方法不断在文件前方读取一个结点,直到文件结束(reader.EOF为True)。对于每个结点通过NodeType属性判断它的类型,如果是Element,则根据Name属性判断是哪个结点,并打印出结点的信息。

示例代码17-2

1.static void ReadXmlWithReader( )

2.{

3. //用指定文件创建XmlReader对象,用于读取XML数据

4. XmlReader reader = XmlReader.Create(@"UserList.XML");

5. //一直读取,直到文件结束

6. while (!reader.EOF)

7. {

8. reader.Read( ); //向前读取一个结点

9. if (reader.NodeType == XmlNodeType.Element)

10. {

11. switch (https://www.wendangku.net/doc/bc18600022.html,)

12. {

13. case "UserList":

14. System.Console.Write("用户列表,");

15. reader.MoveToAttribute("Count");

16. System.Console.WriteLine("有{0}个用户:", reader.

17. ReadContentAsInt( ));

18. break;

19. case "User":

20. reader.MoveToAttribute("ID");

21. System.Console.Write("编号:{0}, ", reader.

22. ReadContentAsString());

23. break;

24. case "Name":

25. System.Console.Write("姓名:{0}, ", reader.

26. ReadElementContentAsString( ));

27. break;

28. case "Age":

29. System.Console.Write("年龄:{0}, ", reader.

30. ReadElementContentAsInt( ));

31. break;

32. case "XingBie":

33. System.Console.Write("性别:{0}, ", reader.

34. ReadElementContentAsString( ));

35. break;

36. case "Telphone":

37. System.Console.Write("电话:{0}, ", reader.

38. ReadElementContentAsString( ));

39. break;

40. case "Email":

41. System.Console.WriteLine("邮箱:{0}", reader.

42. ReadElementContentAsString( ));

43. break;

44. default:

45. break;

46. }

47. }

48. }

49. reader.Close( );

50.}

示例代码17-2的输出如下,从中可以看出,通过XmlReader.Read()可以读取任何XML数据,而且可以将数据按照指定的类型读入。

1.用户列表,有3个用户:

2.编号:1, 姓名:张三, 年龄:18, 性别:男,

电话:131********, 邮箱:zhangsan@https://www.wendangku.net/doc/bc18600022.html,

3.编号:2, 姓名:李四, 年龄:25, 性别:男,

电话:131********, 邮箱:lisi@https://www.wendangku.net/doc/bc18600022.html,

4.编号:3, 姓名:黄花, 年龄:22, 性别:女,

电话:131********, 邮箱:huanghua@https://www.wendangku.net/doc/bc18600022.html,

技巧:在XmlReader第一次创建之后,必需先调用XmlReader.Read()方法获得第一个结点,然后才开始访问该结点的内容。

相关文档