XML结构简介

XML结构简介

NodeType:

  • XmlDeclaration eg. <?xml version="1.0"?>
  • Whitespace
  • Comment eg.
  • Element eg. '<'ElementName ArAttribute1 =“1” Attribute2=“2” ‘>’
  • Text eg. ‘<‘Element’>‘Text’<’/Element’>’
  • EndElement eg. ‘<’/ElementName’>’

读ElementName

XmlReader rdr= XmlReader.Create("books.xml");
while(rdr.Read())
{
	if(rdr.NodeType == XmlNodeType.Element)
	{
		richTextBox1.AppendText(rdr.Name+"\r\n");
	}
	
}

读Text

<--method 1-->
XmlReader rdr = XmlReader.Create("books.xml");
While(rdr.Read())
{
	if(rdr.NodeType ==XmlNodeType.Text)
		richTextBox1.AppendText(rdr.Value + "\r\n");
}
<-- method 2-->
XmlReader rdr = XmlReader.Create("books.xml");
while(rdr.Read())
{
	if(rdr.NodeType == XmlNodeType.Element)
	{
		if(rdr.Name =="price")
		{
			decimal price = rdr.ReadElementContentAsDecimal();
			richTextBox1.AppendText("Price = " + price + “\r\n”);
		}
	}
}	
			
<-- method 3 -->
XmlReader rdr = XmlReader.Create("books.xml");
while(!rdr.EOF)
{
	//if hit an element type
	if(rdr.MopveToContent() == XmlNodeType.Element && rdr.Name == “title”)
	{
		richTextBox1.AppendText(rdr.ReadElementString() + "\r\n");
	}
	else
	{
		//otherwise move on
		rdr.Read();
	}
}

		

读Attribute

XmlReader tr = XmlReader.Create("books.xml");
while(tr.Read())
{
	if(tr.NodeType == XmlNodeType.Element)
	{
		for(int i = 0; i<tr.AttributeCount; i++)
		{
			richTextBox1.AppendText(tr.GetAttribute(i)+"\r\n");
		}
	}
}

写 Xml

XmlWriteSettings settings = new XmlWriteSettings();
settings.Indent = true;
settings.NewLineOnAttributes = true;
XmlWriter writer = XmlWriter.Create("newbook.xml",settings);
writer.WriteStartDocument();
writer.WriteStartElement("book");
writer.WriteAttributeString("genre","Mystery");
writer.WriteAttributeString("publicationdata","2001");
Writer.WriteElementString("title","Case of the Missing Cookie");
writer.WriteStartElement("author");
writer.writeElementString("name","Cookie Monster");
writer.WriteEndElement();
writer.WriteElementstring("price","9.99");
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Flush();
writer.Close();

通过序列化和反序列化读写Xml

序列化写Xml 将自定义类的成员属性直接写入Xml文件并导入
string infoFile = @"info.xml";
Info info = new Info();
info.IP = "127.0.0.0";
info.Port = "502";
info.Name = "Me";
TextWriter tr = new streamWriter(info);
XmlSerializer sr = new XmlSerializer(typeof(Info));
sr.serialize(tr,info);
tr.close();
反序列化读Xml 读取xml直接初始化自定义的类
string infoFile = "info.xml";
Info info = new Info();
FileStream f;
try
{
	f= new FileStream(@infoFile,FileMode.Open);
	FileInfo fi = new FileInfo(@infoFile);
	if(fi,Length == 0)
	{
		f.Dispose();
		return;
	}
	XmlSerializer newSr = new XmlSerializer(typeof(Info));
	info = (Info) newSr.Deserialize(f);
	f.Close(); 
}
catch{}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fwsylin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值