////////////////////////////////////////////////////////////////////////////////
//author: stardicky //
//e-mail: stardicky@hotmail.com //
//qqnumber: 9531511 //
//companyname: ezone international //
//class: hbs-0308 //
//title: 关于xml文档模型的事件驱动 //
////////////////////////////////////////////////////////////////////////////////
using system;
using system.xml;
namespace ezonexmleventdemo
{
/// <summary>
/// class1 的摘要说明。
/// </summary>
class xmlevent
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[stathread]
static void main(string[] args)
{
//
// todo: 在此处添加代码以启动应用程序
//
xmldocument xmldoc=new xmldocument();
xmldeclaration mydeclaration=xmldoc.createxmldeclaration("1.0","utf-8","yes");
xmldoc.nodechanged+=new xmlnodechangedeventhandler(xmldoc_nodechanged);
xmldoc.nodechanging+=new xmlnodechangedeventhandler(xmldoc_nodechanging);
xmldoc.nodeinserted+=new xmlnodechangedeventhandler(xmldoc_nodeinserted);
xmldoc.nodeinserting+=new xmlnodechangedeventhandler(xmldoc_nodeinserting);
xmldoc.noderemoved+=new xmlnodechangedeventhandler(xmldoc_noderemoved);
xmldoc.noderemoving+=new xmlnodechangedeventhandler(xmldoc_noderemoving);
xmldoc.appendchild(mydeclaration);
xmlelement ezoneroot=xmldoc.createelement("ezoneroot");
xmldoc.appendchild(ezoneroot);
xmlelement myname=xmldoc.createelement("name");
xmlelement firstname=xmldoc.createelement("first");
firstname.innertext="a";
xmlelement middlename=xmldoc.createelement("middle");
middlename.innertext="b";
xmlelement lastname=xmldoc.createelement("last");
lastname.innertext="c";
xmldoc.documentelement.appendchild(myname);
myname.appendchild(firstname);
myname.appendchild(middlename);
myname.appendchild(lastname);
console.writeline(xmldoc.innerxml);
}
private static void xmldoc_nodechanged(object sender, xmlnodechangedeventargs e)
{
console.writeline("——————————————————-");
console.writeline("产生事件 – xmldoc_nodechanged");
console.writeline("事件类型: "+e.action.tostring());
console.writeline("节点类型: "+e.node.nodetype.tostring());
console.writeline("节点名称: "+e.node.name);
console.writeline("节点的值: "+e.node.innerxml);
console.writeline("——————————————————-");
}
private static void xmldoc_nodechanging(object sender, xmlnodechangedeventargs e)
{
console.writeline("——————————————————-");
console.writeline("产生事件 – xmldoc_nodechanging");
console.writeline("事件类型: "+e.action.tostring());
console.writeline("节点类型: "+e.node.nodetype.tostring());
console.writeline("节点名称: "+e.node.name);
console.writeline("节点的值: "+e.node.innerxml);
console.writeline("——————————————————-");
}
private static void xmldoc_nodeinserted(object sender, xmlnodechangedeventargs e)
{
console.writeline("——————————————————-");
console.writeline("产生事件 – xmldoc_nodeinserted");
console.writeline("事件类型: "+e.action.tostring());
console.writeline("节点类型: "+e.node.nodetype.tostring());
console.writeline("节点名称: "+e.node.name);
console.writeline("节点的值: "+e.node.innerxml);
console.writeline("——————————————————-");
}
private static void xmldoc_nodeinserting(object sender, xmlnodechangedeventargs e)
{
console.writeline("——————————————————-");
console.writeline("产生事件 – xmldoc_nodeinserting");
console.writeline("事件类型: "+e.action.tostring());
console.writeline("节点类型: "+e.node.nodetype.tostring());
console.writeline("节点名称: "+e.node.name);
console.writeline("节点的值: "+e.node.innerxml);
console.writeline("——————————————————-");
}
private static void xmldoc_noderemoved(object sender, xmlnodechangedeventargs e)
{
console.writeline("——————————————————-");
console.writeline("产生事件 – xmldoc_noderemoved");
console.writeline("事件类型: "+e.action.tostring());
console.writeline("节点类型: "+e.node.nodetype.tostring());
console.writeline("节点名称: "+e.node.name);
console.writeline("节点的值: "+e.node.innerxml);
console.writeline("——————————————————-");
}
private static void xmldoc_noderemoving(object sender, xmlnodechangedeventargs e)
{
console.writeline("——————————————————-");
console.writeline("产生事件 – xmldoc_noderemoving");
console.writeline("事件类型: "+e.action.tostring());
console.writeline("节点类型: "+e.node.nodetype.tostring());
console.writeline("节点名称: "+e.node.name);
console.writeline("节点的值: "+e.node.innerxml);
console.writeline("——————————————————-");
}
}
}
//(程序运行结果)
//——————————————————-
//产生事件 – xmldoc_nodeinserting
//事件类型: insert
//节点类型: xmldeclaration
//节点名称: xml
//节点的值:
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserted
//事件类型: insert
//节点类型: xmldeclaration
//节点名称: xml
//节点的值:
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserting
//事件类型: insert
//节点类型: element
//节点名称: ezoneroot
//节点的值:
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserted
//事件类型: insert
//节点类型: element
//节点名称: ezoneroot
//节点的值:
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserting
//事件类型: insert
//节点类型: text
//节点名称: #text
//节点的值:
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserted
//事件类型: insert
//节点类型: text
//节点名称: #text
//节点的值:
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserting
//事件类型: insert
//节点类型: text
//节点名称: #text
//节点的值:
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserted
//事件类型: insert
//节点类型: text
//节点名称: #text
//节点的值:
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserting
//事件类型: insert
//节点类型: text
//节点名称: #text
//节点的值:
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserted
//事件类型: insert
//节点类型: text
//节点名称: #text
//节点的值:
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserting
//事件类型: insert
//节点类型: element
//节点名称: name
//节点的值:
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserted
//事件类型: insert
//节点类型: element
//节点名称: name
//节点的值:
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserting
//事件类型: insert
//节点类型: element
//节点名称: first
//节点的值: a
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserted
//事件类型: insert
//节点类型: element
//节点名称: first
//节点的值: a
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserting
//事件类型: insert
//节点类型: element
//节点名称: middle
//节点的值: b
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserted
//事件类型: insert
//节点类型: element
//节点名称: middle
//节点的值: b
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserting
//事件类型: insert
//节点类型: element
//节点名称: last
//节点的值: c
//——————————————————-
//——————————————————-
//产生事件 – xmldoc_nodeinserted
//事件类型: insert
//节点类型: element
//节点名称: last
//节点的值: c
//——————————————————-
//<?xml version="1.0" encoding="utf-8" standalone="yes"?><ezoneroot><name><first>a
//</first><middle>b</middle><last>c</last></name></ezoneroot>