C#中使用XmlReader读取XML数据
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.IO;
namespace tryXmlreader
{
class Program
{
static void Main(string[] args)
{
//CreateByFile();
//CreateByFileStream();
//ReadElementContentAs();
ReadAttribute();
//Console.ReadLine();
}
public static void CreateByFile()
{
//创建XML读取器,读取XML文件
XmlReader reader = XmlReader.Create(@"e:\1.xml");
Console.WriteLine("All Text in books.xml:\n");
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Text)
{
Console.WriteLine(reader.Value);
}
}
reader.Close();
}
public static void CreateByFileStream()
{
FileStream fs = new FileStream(@"e:\1.xml", FileMode.Open);
//创建XML读取器,读取XML文件流
XmlReader reader = XmlReader.Create(fs);
Console.WriteLine("\nAll title in books.xml:\n");
//循环查找节点,直到最后一个节点
while (!reader.EOF)
{
if (reader.MoveToContent() == XmlNodeType.Element && https://www.360docs.net/doc/2f19061532.html, == "title")
{
//打印节点类型为Element,名称为title的节点值
DisplayElementString(reader);
}
else
{
reader.Read();
}
}
reader.Close();
fs.Close();
}
public static void DisplayElementString(XmlReader reader)
{ try
{
Console.WriteLine(reader.ReadElementString());
}
//捕捉不包含文本内容的元素抛出的异常
catch (XmlException e)
{
}
}
public static void ReadElementContentAs()
{
XmlReader reader = XmlReader.Create(@"e:\1.xml");
Console.WriteLine("\nAfter update price * 0.8:\n");
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
if (https://www.360docs.net/doc/2f19061532.html, == "price")
{
//将price元素值读取为decimal类型
decimal price =
reader.ReadElementContentAsDecimal();
price = price * 0.8m;
Console.WriteLine("New Price = {0}", price);
}
else if (https://www.360docs.net/doc/2f19061532.html, == "title")
{
//将title元素值读取为string类型
Console.WriteLine(reader.ReadElementContentAsString());
}
}
}
reader.Close();
}
public static void ReadAttribute()
{
XmlReader reader = XmlReader.Create(@"e:\1.xml");
Console.WriteLine("\nAttribute:\n");
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element)
{
for (int i = 0; i < reader.AttributeCount; i++)//迭代其所有属性
{
Console.WriteLine(reader.GetAttribute(i));
}
}
}
reader.Close();
}
}
}