1.XmlReader对XML文件的读
XmlReader类是一个提供对XML数据的非缓存,只进行只读访问的抽象基类。该类符合W3C可扩展标记语言(XML)1.0和XML中的命名空间的建议。
使用XmlReader的步骤:
我这里选用create反法获取XmlReader实例,Create方法使用XmlReaderSetting类指定XmlReader实例应支持的功能。
代码实例如下:
public static void Main(string[] args)
{
XmlReader reader = null;
try
{
XmlReaderSettings settings = new XmlReaderSettings();
//设置XmlReaderSettings的对象属性
settings.ProhibitDtd = false;
settings.IgnoreComments = true;//忽略注释
reader = XmlReader.Create(@"C:\Users\yxz\Desktop\LedxmlConfig.xml", settings);
Readxml(reader);
}
catch
{
}
finally
{
if (reader != null)
reader.Close();
}
}
private static void Readxml(XmlReader reader)
{
try
{
//解析文件,并显示每一个节点
while(reader.Read())
{
switch(reader.NodeType)
{
case XmlNodeType.Element:
if(reader.IsEmptyElement)
{
Console.WriteLine("<{0}/>", reader.Name);
}
else
{
Console.Write("<{0}", reader.Name);
if(reader.HasAttributes)//属性?
{
while(reader.MoveToNextAttribute())
{
Console.Write(" {0}=\"{1}\"", reader.Name, reader.Value);
}
}
Console.WriteLine(">", reader.Name);
}
break;
case XmlNodeType.Text://节点的文本内容
Console.WriteLine(reader.Value);
break;
case XmlNodeType.CDATA:
Console.WriteLine("<![CADTA[{0}]]>",reader.Value);
break;
case XmlNodeType.Comment://注释
Console.WriteLine("<!--{0}-->", reader.Value);
break;
case XmlNodeType.XmlDeclaration://xml声明
Console.WriteLine("<?xml version='1.0'?>", reader.Value);
break;
case XmlNodeType.Document://作为文档树的根的文档对象提供对整个xml文档的访问
break;
case XmlNodeType.DocumentType://由以下标记指示的文档类型声明
Console.WriteLine("<!DOCTYPE {0} [{0}]>", reader.Name, reader.Value);
break;
case XmlNodeType.EntityReference://实体引用
Console.WriteLine( reader.Name);
break;
case XmlNodeType.EndElement://末尾元素标记
Console.WriteLine("</{0}>",reader.Name);
break;
}
}
}
catch
{
}
}
XmlWriter
XmlWriter类是一个抽象基类,提供只进,只写,非缓存的方式来生成XML流。
XmlWriter writer = null;
try
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.IndentChars = (" ");
writer = XmlWriter.Create(@"C:\Users\yxz\Desktop", settings);
WriterXml(writer);
}
catch
{
}
finally
{
if (writer != null)
writer.Close();
}
private static void WriterXml(XmlWriter writer)
{
try
{
writer.WriteStartElement("book");
WriteChildNode(writer, "红楼梦", "曹雪芹", "25");
WriteChildNode(writer, "西游记", "罗贯中", "45");
WriteChildNode(writer, "水浒传", "施耐庵", "29");
WriteChildNode(writer, "三国演义", "吴承恩", "35");
writer.WriteEndElement();
}
catch
{
}
}
private static void WriteChildNode(XmlWriter writer,string title, string author,string price)
{
writer.WriteStartElement("book");
writer.WriteStartElement("title");
writer.WriteValue(title);
writer.WriteEndElement();
writer.WriteStartElement("author");
writer.WriteValue(author);
writer.WriteEndElement();
writer.WriteStartElement("price");
writer.WriteValue(price);
writer.WriteEndElement();
writer.WriteEndElement();
}