//在当前节点的所有字节点的末尾添加一个新的字节点
//XmlDocument Doc,节点所在的XML文档
//XmlNode Current,待插入子节点的当前节点
//string ElemName,新增节点的名称
//string ElemText,新增节点的属性值
//返回值:添加的新节点
public XmlNode AppendNewNode(XmlDocument Doc,XmlNode Current,string ElemName,string ElemText)
{
//创建一个新节点
XmlElement elem=Doc.CreateElement(ElemName);
elem.InnerText=ElemText;
//将该节点添加到当前节点的字节点末尾
return Current.AppendChild(elem);
}
//在当前节点的所有字节点的开始添加一个新的字节点
//如上面的函数说明
public XmlNode PrependNewNode(XmlDocument Doc,XmlNode Current,string ElemName,string ElemText)
{
//创建一个新节点
XmlElement elem=Doc.CreateElement(ElemName);
elem.InnerText=ElemText;
//将该节点添加到当前节点的字节点末尾
return Current.PrependChild(elem);
}
//在当前节点添加一个新的属性值
//string Xmlns,给定的前缀最近的XMLNS声明
public void AddAttr(XmlDocument Doc,XmlNode Current,string Xmlns,string attrName,string attrVal)
{
string ns=Current.GetNamespaceOfPrefix(Xmlns);
XmlNode attr=Doc.CreateNode(XmlNodeType.Attribute,attrName,ns);
attr.Value=attrVal;
Current.Attributes.SetNamedItem(attr);
}
//输出指定节点的所有信息(包括子节点)
public void OutputXMLNode(XmlNode Current)
{
Console.WriteLine("\n\n 输出节点所有信息.......");
IEnumerator ienum=Current.GetEnumerator();
XmlNode Author;
while(ienum.MoveNext())
{
Author=(XmlNode)ienum.Current;
Console.WriteLine(Author.OuterXml);
Console.WriteLine();
}
}
XmlDocument doc=new XmlDocument();
doc.LoadXml("<作者 xmlns:auth='QIANG' auth:性别='男'>"+
"<电话>13507175464</电话>"+
"</作者>");
Console.WriteLine("初始的XML文档.....");
doc.Save(Console.Out);
XmlNode root=doc.FirstChild;
Class1 XmlTest=new Class1();
XmlTest.AppendNewNode(doc,root,"姓名","张三");
XmlNode book=XmlTest.AppendNewNode(doc,root,"书籍","");
XmlTest.AppendNewNode(doc,book,"出版日期","2001-1-1");
XmlTest.PrependNewNode(doc,book,"名称","生活空间");
Console.WriteLine("\n\n 增加节点后的XML文档.........");
doc.Save(Console.Out);
XmlElement elem=doc.CreateElement("电子邮件");
elem.InnerText="zhao@163.com";
root.InsertAfter(elem,root.FirstChild);
Console.WriteLine("\n\n 使用InsertAfter增加节点后的XML文档.......");
doc.Save(Console.Out);
XmlNode clone=root.Clone();
Console.WriteLine("\n\n 含字节点的克隆节点内容.......");
Console.WriteLine(clone.OuterXml);
XmlNode shallow=root.CloneNode(false);
Console.WriteLine("\n\n 不含字节点克隆节点内容.......");
Console.WriteLine(shallow.OuterXml );
XmlTest.OutputXMLNode(root);
XmlTest.AddAttr(doc,root,"auth","年龄","27");
Console.WriteLine("\n\n 添加新属性年龄后的XML文档.......");
doc.Save(Console.Out);
elem=doc.CreateElement("籍贯");
elem.InnerText="广州";
root.ReplaceChild(elem,root.FirstChild);
Console.WriteLine("\n\n 使用籍贯节点替代电话节点后的XML文档.........");
doc.Save(Console.Out);
root.RemoveChild(root.FirstChild);
Console.WriteLine("\n\n 删除指定节点籍贯后的XML文档.........");
doc.Save(Console.Out);
root.RemoveAll();
Console.WriteLine("\n\n 删除所有属性和节点后的XML文档..........");
doc.Save(Console.Out);