asp.net下xml文件的创建

xml文件是我们程序员经常打交道的一种文件,通常情况下我们用它来存储连接数据库的字符串,加解密的密钥等系统配置信息。因此,对于xml文件的操作是非常重要的。最近我在项目中也有大量对于xml文件的操作,对xml的操作进行了整理。(由于本人经验欠缺,整理的不好,欢迎大家拍砖。)

一、XmlNode与XmlElement的区别

我在整理过程中,发现分不清XmlNode与XmlElement两个类,不知道什么时候使用XmlNode,什么情况下使用XmlElement,他们两个的功能相当类似,于是我研究了一下,总结如下:

1.通过查询MSDN会发现如下集成层次结构,由下图看以看出XmlElement继承自XmlNode。根据类之间的继承关系,我们可以知道,XmlNode所拥有的方法和属性,在XmlElement类中也是可以使用的。

2.XmlNode类是一个抽象类,而XmlElement是一个具体类,它们的定义如下,XmlNode类对象必须通过XmlDocument实例通过调用CreateNode方法来创建。

public abstract class XmlNode : ICloneable, 
	IEnumerable, IXPathNavigable
public class XmlElement : XmlLinkedNode

3.MSDN对XmlNode的解释为Represents a single node in the XML document(表示XML文档中的单个节点),对XmlElement的解释为Represents an element(表示一个元素)。先来解释一下节点与元素两个概念之间的关系:引用一下w3c的原话 A node can be an element node, an attribute node, a text node, or any other of the node types explained in the “Node types” chapter,所以说Element是一种特殊的Node,但是Node并不一定是Element,这一点从上面的继承关系图也可以总结出来。

4.XmlElement相比XmlNode拥有众多Attribute的操作方法,可以很方便的对其属性进行操作,XmlNode可以通过Attributes属性来获取其属性列表。

来看段xml的内容:

<?xml version="1.0" encoding="utf-8"?>
<root>
 <user gender="male">
 <name>rayson</name>
 <age>24</age>
 </user>
</root>


其中:root是xml文件的根节点,user是root节点的子节点,gender是属性,name和age是user节点的子节点。

二、XML文档结构解析

我将根据上述xml结构,对其进行解析,并对其创建过程进行阐述。

首先,我们看到的是整个xml文档,里面包含了很多节点,要想创建这样一个文档结构,必须先有一个容器来容纳这些节点信息,在C#中这个文档容器就是XmlDocument,可以用如下代码来创建:

XmlDocument xml = new XmlDocument();


1.文档的声明

<?xml version="1.0" encoding="utf-8"?>

这是xml文件的声明部分,它定义 XML 的版本 (1.0) 和所使用的编码方式(utf-8)。在C#中你可以使用下面的代码来创建:

XmlNode xmlNode = xml.CreateXmlDeclaration("1.0", "utf-8", "");
xml.AppendChild(xmlNode);



2.根节点

标准的XML 文档必须包含根元素,该元素是所有其他元素的父元素,该例子中<root></root>就是根节点,创建代码如下:

 XmlNode root = xml.CreateNode(XmlNodeType.Element, "root", "");
 //XmlNode root = xml.CreateNode("element", "root", "");
 xml.AppendChild(root);//上面两种方式都可以


3.含有属性的节点

在节点 <user gender=”male”></user>中,gender=”male”是含有属性的节点,根据上面对XmlElement的介绍,我们知道可以使用Element来创建该类型的节点:

 XmlElement ele = xml.CreateElement("", "user", "");
 ele.SetAttribute("gender", "male");
 root.AppendChild(ele);


4.普通文本节点

文档中user的两个子节点“<name>rayson</name><age>24</age>”是我们最常用的文本节点,为我们的开发提供了强大的扩展空间,这个时候我们一般使用XmlText或者ele.InnerText来实现:

 XmlElement ele1 = xml.CreateElement("","name","");
 XmlText text = xml.CreateTextNode("rayson");
 ele1.AppendChild(text);
 ele.AppendChild(ele1);
 XmlElement ele2 = xml.CreateElement("", "age", "");
 ele2.InnerText = "24";
 ele.AppendChild(ele2);


下面是完整的代码:

string test = System.Environment.CurrentDirectory + "config\test.xml";

 XmlDocument xml = new XmlDocument();
 XmlNode xmlNode = xml.CreateXmlDeclaration("1.0", "utf-8", "");
 xml.AppendChild(xmlNode);
 //XmlNode root = xml.CreateElement("", "root", "");
 XmlNode root = xml.CreateNode(XmlNodeType.Element, "root", "");
 //XmlNode root = xml.CreateNode("element", "root", "");
 xml.AppendChild(root);
 XmlElement ele = xml.CreateElement("", "user", "");
 ele.SetAttribute("gender", "male");
 root.AppendChild(ele);
 XmlElement ele1 = xml.CreateElement("","name","");
 XmlText text = xml.CreateTextNode("rayson");
 ele1.AppendChild(text);
 ele.AppendChild(ele1);
 XmlElement ele2 = xml.CreateElement("", "age", "");
 ele2.InnerText = "24";
 ele.AppendChild(ele2);
 xml.Save(test);


结论:

本文主要是介绍了.net中XmlNode与XmlElement的联系与区别,并且根据一个xml文档示例介绍了各种节点的创建方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值