using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
namespace prjXml
{
class Program
{
static void Main(string[] args)
{
//从无到有开始创建
XmlDocument doc = new XmlDocument();
//在创建xml文档的时候,不需要Load
//文档还没创建呢,Load个辣子啊。
//第一步考虑先创建Xml文档的声明
//也就是下面一句
//<?xml version="1.0" encoding="utf-8" ?>
//这一句也是个节点,不过不是普通节点,
//是个XmlDeclaration
//创建这个家伙应该使用XmlDocument的
//CreateXmlDeclaration方法。
XmlNode declare = doc.CreateXmlDeclaration("1.0", "utf-8", "");
//将定义加入xml文档中
//必须使用XmlDocument的AppendChild方法。
doc.AppendChild(declare);
//创建根节点
//根节点也是节点嘛。
//但是传统的CreateNode方法太复杂了
//使用createElement_x比较简单,并且
//Element也是一种Node嘛。
XmlNode root = doc.createElement_x("books");
//然后加入xml文档中。
//必须使用XmlDocument的AppendChild方法。
//因为它是根节点,子节点就比较花哨了。
doc.AppendChild(root);
//添加一个子节点,要考虑的问题有:
//节点名称,要将子节点添加到哪个
//节点中,节点的内容,节点的属性等
//先把子节点创建起来再说。
XmlNode node1 = doc.createElement_x("book");
//加入到某个节点的子节点集合中。
//到这儿为止,我们只创建了两个真正的节点
//一个是根节点root,另一个是node1,咱们
//刚创建的节点,因为蛇不能吃自己的尾巴
//所以我们将node1添加到root的子节点集合中
root.AppendChild(node1);
//咱们再做一个节点
XmlNode node2 = doc.createElement_x("haha");
//现在我们要把node2给挂到xml文档树中,
//可选择的老爹就多了,现在有root和node1了
//如果加到root中,那么node1和node2
//就是兄弟节点了,如果加入到node1中,
//node2就是node1的儿子,node2就是root的
//孙子了。
//兄弟
root.AppendChild(node2);
//儿子
//node1.AppendChild(node2);
//下来我们给node1的开始标记和结束标记中
//写点玩意,简单了。
node1.InnerText = "玩意";
//给node2中添加一个属性“role”,
//值为“玉皇大帝”
//先创建属性节点
XmlNode roleAttribute = doc.CreateAttribute("role");
//给属性节点赋值
roleAttribute.Value = "玉皇大帝";
//加入到node2的属性集合中
//node2.AppendChild(roleAttribute);
//挂了,为嘛?!
//属性不能作为子节点添加到节点中
//一计不成再生一计。
//node2.Attributes.Append(roleAttribute);
//KAO,编译都通不过。
//错误 2 参数“1”: 无法从“System.Xml.XmlNode”转换为“System.Xml.XmlAttribute” C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\prjAutoLogin1\prjAutoLogin1\Program.cs 77 37 prjAutoLogin1
//难怪,虽然roleAttribute是个节点,
//但人家的Attributes集合的Append方法
//要的是Attribute,还好,Attribute是Node
//的子类,好办,转一下就是了。
node2.Attributes.Append(roleAttribute as XmlAttribute);
//普通的xml文档中,无非是节点或属性嘛
//最后来个保存嘛。
doc.Save("book.xml");
//打完收工,临时不扛铁牛。
}
}
}