.net 与 xml基础

xml:
<?xml version="1.0" encoding="utf-8"?>
<user>
<person name="发明" sex="女" age="25">
    <pass>66666</pass>
    <Address>昆明</Address>
</person>
<person name="风云" sex="女" age="25">
    <pass>123</pass>
    <Address>昆明</Address>
</person>
</user>

using System;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml;


public partial class _Default : System.Web.UI.Page
{

    private XmlDocument xmlDoc;
    protected void Page_Load(object sender, EventArgs e)
    {
        AddElement();
        UpdateElement();
        deleteNode();
        showIt();
    }
    private void LoadXml()
    {
        xmlDoc = new XmlDocument();
        xmlDoc.Load(Server.MapPath("XMLFile.xml"));
    }
    //添加节点
    private void AddElement()
    {

        LoadXml();

        XmlNode xmldocSelect = xmlDoc.SelectSingleNode("//user");

        XmlElement el = xmlDoc.CreateElement("person"); //添加person节点
        el.SetAttribute("name", "风云"); //添加person节点的属性"name"
        el.SetAttribute("sex", "女"); //添加person节点的属性 "sex"
        el.SetAttribute("age", "25"); //添加person节点的属性 "age"

        XmlElement xesub1 = xmlDoc.CreateElement("pass"); //添加person节点的里的节点
        xesub1.InnerText = "123";//设置文本节点
        el.AppendChild(xesub1);

        XmlElement xesub2 = xmlDoc.CreateElement("Address");
        xesub2.InnerText = "昆明";//设置文本节点
        el.AppendChild(xesub2);

        xmldocSelect.AppendChild(el);
        xmlDoc.Save(Server.MapPath("XMLFile.xml"));

    }
    //修改节点
    private void UpdateElement()
    {
        LoadXml();
        XmlNodeList nodeList = xmlDoc.SelectSingleNode("//user").ChildNodes;//获取bookstore节点的所有子节点
        foreach (XmlNode xn in nodeList)//遍历所有子节点
        {
            XmlElement xe = (XmlElement)xn;//将子节点类型转换为XmlElement类型
            if (xe.GetAttribute("name") == "风云")//如果name属性值为“风云”
            {
                xe.SetAttribute("name", "发明");


                //如果下面有子节点在下走
                XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点
                foreach (XmlNode xn1 in nls)//遍历
                {
                    XmlElement xe2 = (XmlElement)xn1;//转换类型
                    if (xe2.Name == "pass")//如果找到
                    {
                        xe2.InnerText = "66666";//则修改
                        break;
                    }
                }

                break;
            }
        }
        xmlDoc.Save(Server.MapPath("XMLFile.xml"));
    }
    //删出节点
    private void deleteNode()
    {
        LoadXml();
        XmlNodeList xnl = xmlDoc.SelectSingleNode("//user").ChildNodes;

        foreach (XmlNode xn in xnl)
        {
            XmlElement xe = (XmlElement)xn;

            if (xe.GetAttribute("name") == "发明")
            {
                //xe.RemoveAttribute("name");//删除name属性
                //xe.RemoveAll();//删除该节点的全部内容
                //xe.ParentNode.RemoveAll();
                xe.ParentNode.RemoveChild(xe);//删除该节点
                break;
            }
        }
        xmlDoc.Save(Server.MapPath("XMLFile.xml"));
    }
    //显示节点
    private void showIt()
    {
        //LoadXml();
        //XmlNode xn = xmlDoc.SelectSingleNode("//user");
        //XmlNodeList xnl = xn.ChildNodes;
        //foreach (XmlNode xnf in xnl)
        //{
        //    XmlElement xe = (XmlElement)xnf;
        //    Console.WriteLine(xe.GetAttribute("name"));//显示属性值
        //    Console.WriteLine(xe.GetAttribute("sex"));

        //    XmlNodeList xnf1 = xe.ChildNodes;
        //    foreach (XmlNode xn2 in xnf1)
        //    {
        //        Console.WriteLine(xn2.InnerText);//显示子节点点文本
        //    }
        //}
       
        DataSet ds = new DataSet();
        string path = Server.MapPath("XMLFile.xml");
        ds.ReadXml(path,System.Data.XmlReadMode.Auto);
        GridView1.DataSource = ds;
        GridView1.DataBind();
    }
}
posted @ 2008-05-27 10:52  举个栗子  阅读(100)  评论(0)    收藏  举报