各位朋友们好!麻烦大家帮帮忙! 先谢谢了
我正在做个meun导航栏要从数据库的三张表(分别为总栏,大栏,小栏,三个栏目表)里取出URL要传的ID 和 
栏目的名称来写入XML文件里
从网上整了段代码 改了又改 实在是没头绪了 只写出了总栏的以下代码循环不会写,蒙了!!!public XmlDataDocument doc;
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        doc = new XmlDataDocument(); doc.Load(Server.MapPath("XMLFile.xml"));//加载XML;
      List<PutColumn> list = (List<PutColumn>)PutColumnManager.GetAllPut();//获取了总栏的ID
和Name 集合
        List<BigColumn> list2 = (List<BigColumn>)BigColumnManager.GetAllBigColumn();//获取了
大栏的ID和Name 集合
        List<SmallColumn> list3 = (List<SmallColumn>)SmallColumnManager.GetAllSmallColumn
();//获取了小栏的ID和Name 集合
      
      foreach (PutColumn pc in list)
        {
            XmlNode root = doc.SelectSingleNode("Newdataset");//查找节点
            XmlElement xe1 = doc.CreateElement("Table");//添加一个节点,这个就是主菜单项
            xe1.SetAttribute("name", pc.PutName.Trim());//添加属性
            xe1.SetAttribute("url", "PutPage.aspx?putId=" + pc.Id.ToString());//同上 
            root.AppendChild(xe1);//把主菜单放在最强的节点中
        }
        // XmlElement xe2 = doc.CreateElement("son");//继续添加节点,这个是子菜单
        // xe2.SetAttribute("name", TextBox2.Text.Trim());
        // xe2.SetAttribute("url", TextBox4.Text.Trim());
        // XmlElement xe3 = doc.CreateElement("aaa");
        // xe3.SetAttribute("name", TextBox5.Text.Trim());
        // xe3.SetAttribute("url", TextBox6.Text.Trim());
        //  xe2.AppendChild(xe3);
        //  xe1.AppendChild(xe2);//把子菜单放进主菜单中
        doc.Save(Server.MapPath("XMLFile.xml"));
    }以下为XML文件需要的效果
<?xml version="1.0" encoding="utf-8"?>
<Newdataset>
  <Table name="总栏" url="Page.aspx?id=1" />
            <son name="大栏" url="Page1.aspx?id=1" >
                    <sm name="小栏" url="Page2.aspx?id=1" />
            </son>
            <son name="大栏" url="Page1.aspx?id=2" >
                    <sm name="小栏" url="Page2.aspx?id=2" />
            </son>
</Table>
    <Table name="总栏2" url="Page.aspx?id=2" />
            <son name="大栏2" url="Page1.aspx?id=3" >
                    <sm name="小栏2" url="Page2.aspx?id=3" />
            </son>
            <son name="大栏2" url="Page1.aspx?id=4" >
                    <sm name="小栏2" url="Page2.aspx?id=4" />
            </son>
</Table>
  <Table name="总栏3" url="Page.aspx?id=3" />
            <son name="大栏3" url="Page1.aspx?id=5" >
                    <sm name="小栏3" url="Page2.aspx?id=5" />
            </son>
            <son name="大栏3" url="Page1.aspx?id=6" >
                    <sm name="小栏3" url="Page2.aspx?id=6" />
            </son>
</Table>
</Newdataset>各位高手请帮帮忙~真的郁闷了!能一次性写入就行了,麻烦大家了 其实最终就是想实现动态添加修改删除menu导航栏中的选项,每次操作数据库,然后每次操作完重写下XML文件,menu重读就行了.
这是我已知的方法了,可是~~~~脑子转不过来了~~如果哪位朋友知道更好的办法来话请指点下!   最好是提供代码

解决方案 »

  1.   

    public static void Insert(string path, string node, string element, string attribute, string value)
            {
                try
                {
                    XmlDocument doc = new XmlDocument();
                    doc.Load(path);
                    XmlNode xn = doc.SelectSingleNode(node);
                    if (element.Equals(""))
                    {
                        if (!attribute.Equals(""))
                        {
                            XmlElement xe = (XmlElement)xn;
                            xe.SetAttribute(attribute, value);
                        }
                    }
                    else
                    {
                        XmlElement xe = doc.CreateElement(element);
                        if (attribute.Equals(""))
                        {
                            xe.InnerText = value;
                        }
                        else
                        {
                            xe.SetAttribute(attribute, value);
                        }
                        xn.AppendChild(xe);
                    }
                    doc.Save(path);
                }
                catch { }
            }
    或循环添加
    http://topic.csdn.net/u/20100405/18/7a2ac7db-fd5b-4032-8175-1160165821b8.html