C# Xml文件操作,解释见注释
标签:des style blog http io color ar os for
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace XmlTest
{
class Program
{
//第一种方案 xml数据流
static void ReadOrder()
{
XmlReaderSettings settings = new XmlReaderSettings(); // 控制解析和验证过程
settings.IgnoreWhitespace = true; // 忽略空白区域
settings.IgnoreComments = true; // 忽略注释
settings.ConformanceLevel = ConformanceLevel.Document; // 是否只具有一个根节点
using (XmlReader reader = XmlReader.Create("Sample.xml", settings)) //打开文件
{
while (reader.Read()) //xml流单位为XMNL节点并且是单向的,每次调用read()都会使节点指向下一个位置,如果为false表示文件结束
{
Console.WriteLine(new string(‘ ‘, reader.Depth * 2)); //深度
Console.WriteLine(reader.NodeType); //节点类型,参考XmlNodeType结构,
switch (reader.NodeType)
{
case XmlNodeType.Element: //元素(例如,- )。
case XmlNodeType.EndElement: //末尾元素标记(例如,)。
Console.WriteLine(reader.Name);
break;
case XmlNodeType.Text: //节点的文本内容。
case XmlNodeType.Comment: //注释(例如,)。
case XmlNodeType.Attribute: //属性
Console.WriteLine(reader.Value);
break;
}
Console.WriteLine("================================");
}
}
}
static void readtest()
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.IgnoreWhitespace = true;
using (XmlReader reader = XmlReader.Create("Sample.xml", settings))
{
string str = "";
//检查当前节点是否是内容(非空白文本、CDATA、Element、EndElement、EntityReference 或 EndEntity)节点,如果此节点不是内容节点,则读取器向前跳至下一个内容节点或文件结尾。 它跳过以下类型的节点:ProcessingInstruction、DocumentType、Comment、Whitespace 或 SignificantWhitespace。
reader.MoveToContent();
//检查当前内容节点是否为具有给定 System.Xml.XmlReader.Name 的元素并将读取器推进到下一个节点。
reader.ReadStartElement("OpenNI");
Console.WriteLine(reader["id"]);
//当在派生类中被重写时,移动到具有指定 System.Xml.XmlReader.Name 的属性。
reader.MoveToAttribute("name");
//将当前位置的文本内容作为 System.String 对象读取。
Console.WriteLine(reader.ReadContentAsString());
reader.MoveToAttribute("id");
Console.WriteLine(reader.ReadContentAsString());
//读取属性后,节点位于Attribute,通过查看NoteType可以进行如下方式进行处理:
//第一种方式:
//reader.ReadStartElement();
//str = reader.ReadElementContentAsString("price", "");
//Console.WriteLine(str);
//reader.ReadEndElement();
//第二种方式:
//当在派生类中被重写时,移动到包含当前属性节点的元素。
reader.MoveToElement();
str = reader.ReadElementContentAsString("title", "");
Console.WriteLine(str);
reader.ReadStartElement("Licenses");
//检查指定的本地名称和命名空间 URI 与当前元素的本地名称和命名空间 URI 是否匹配,然后读取当前元素,并将内容作为 System.String
str = reader.ReadElementContentAsString("price", "");
Console.WriteLine(str);
reader.ReadEndElement();
reader.ReadEndElement();
}
}
static void writetest(string filename)
{
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.OmitXmlDeclaration = false;
using (XmlWriter writer = XmlWriter.Create(filename, settings))
{
//起始元素
writer.WriteStartElement("book");
//写属性
writer.WriteAttributeString("name","the art of code");
writer.WriteAttributeString("time", DateTime.Now.ToString());
//节点1
writer.WriteElementString("name","the art of code");
//节点2
writer.WriteStartElement("time");
writer.WriteValue(DateTime.Now);
writer.WriteEndElement();
//结束“book”节点
writer.WriteEndElement();
}
}
//==========================================================第二种方案
static void WriteXmlDoc(String filename)
{
XmlDocument xml = new XmlDocument();
//添加声明
XmlDeclaration xmldecl = xml.CreateXmlDeclaration("1.0", "gb2312", null);
xml.AppendChild(xmldecl);
//创建根节点
XmlElement root = xml.CreateElement("root");
xml.AppendChild(root);
//创建属性
XmlAttribute id = xml.CreateAttribute("id");
id.Value = "1234";
//创建时间属性
XmlAttribute time = xml.CreateAttribute("time");
time.Value = DateTime.Now.ToString();
//创建元素
XmlElement name = xml.CreateElement("name");
name.AppendChild(xml.CreateTextNode("the art of code"));
XmlElement author = xml.CreateElement("author");
author.AppendChild(xml.CreateTextNode("s.b"));
XmlElement book = xml.CreateElement("book");
book.AppendChild(name);
book.AppendChild(author);
//根节点添加属性
root.Attributes.Append(id);
root.Attributes.Append(time);
//设置属性
root.SetAttribute("num", "10000");
//跟节点添加子节点
root.AppendChild(book);
xml.Save(filename);
}
static void ReadXmlDoc(string filename)
{
XmlDocument xml = new XmlDocument();
xml.Load(filename);
//获得属性
Console.WriteLine(xml.DocumentElement.Attributes["time"].Value);
//遍历子节点
if (xml.DocumentElement.HasChildNodes)
{
XmlNodeList list = xml.DocumentElement.ChildNodes;
foreach (XmlNode it in list)
{
Console.WriteLine(it.InnerXml);
}
}
}
static void Main(string[] args)
{
//ReadOrder();
// readtest();
// writetest("test.xml");
WriteXmlDoc("doc.xml");
ReadXmlDoc("doc.xml");
Console.Read();
}
}
}
细雨标记: 细雨淅淅
C# Xml文件操作,解释见注释
标签:des style blog http io color ar os for
原文地址:http://www.cnblogs.com/zsb517/p/4079199.html
评论