程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> XML 動態 插入 父類標示 子類標示,xml標示

XML 動態 插入 父類標示 子類標示,xml標示

編輯:C#入門知識

XML 動態 插入 父類標示 子類標示,xml標示


由於第一次寫博客,寫的不好的地方,還請各位大神多多指點,

講解一下:xml動態插入數據並保存,寫這個時候費了我不少勁,最後終於皇天不負有心人讓我搞出來了,特意分享給大家,寫的不完美的地方還請大家多多指點

數據庫表結構

Categoryid       GUid自動生成

CategoryName  分類名稱
CategoryIdentifies 分類標示
ParentIdentifies 父標示

Sort 排序

控制器代碼:

  public ActionResult CreateCategory(CategoryForm model)
        {

            //定義並從xml文件中加載節點(根節點)

            XElement rootNode = XElement.Load(HttpRuntime.AppDomainAppPath + "Runtime/Category.xml");
            IEnumerable<XElement> ele = rootNode.Elements("Controller").Elements("Root");
            XElement dnode = rootNode.Elements("Controller").FirstOrDefault();
            XElement pElement = null;
            //判斷xml中是否有root節點

            var count = 0;
            XElement Parentnode = ele.Where(e => ((string)e.Attribute("CategoryName")) == model.CategoryName).FirstOrDefault();
            var CategoryIdentifies = 0.0;
            //判斷當前節點是否存在
            if (Parentnode == null)
            {
                //判斷是否是父節點
                if (model.ParentIdentifies == "0")
                {   //獲取同級父節點的個數
                    count = ele.Count();
                    if (count > 0)
                    {
                        CategoryIdentifies = Convert.ToDouble(model.CategoryIdentifies) + count;
                        pElement = new XElement("Root", new XAttribute("CategoryName", model.CategoryName), new XAttribute("CategoryIdentifies", CategoryIdentifies), new XAttribute("ParentIdentifies", "0"), new XAttribute("sort", model.Sort));
                        dnode.Add(pElement);
                      
                    }
                    else
                    {
                        pElement = new XElement("Root", new XAttribute("CategoryName", model.CategoryName), new XAttribute("CategoryIdentifies", model.CategoryIdentifies), new XAttribute("ParentIdentifies", "0"), new XAttribute("sort", model.Sort));
                        dnode.Add(pElement);
                       
                    }
                }
                else
                {
                    //獲取同級幾點的個數
                    count = rootNode.Descendants("Root").Where(e => ((string)e.Attribute("ParentIdentifies")) == model.ParentIdentifies).Count();
                    //獲取父節點
                    var sElement = rootNode.Descendants("Root").Where(e => ((string)e.Attribute("CategoryIdentifies")) == model.ParentIdentifies).FirstOrDefault();
                    if (count == 0)
                    {
                        pElement = new XElement("Root", new XAttribute("CategoryName", model.CategoryName), new XAttribute("CategoryIdentifies", sElement.Attribute("CategoryIdentifies").Value + model.ParentIdentifies), new XAttribute("ParentIdentifies", model.ParentIdentifies), new XAttribute("sort", model.Sort));
                        sElement.Add(pElement);
                       

                    }
                    else
                    {
                        CategoryIdentifies = Convert.ToDouble(sElement.Attribute("CategoryIdentifies").Value + model.ParentIdentifies) + count;
                        pElement = new XElement("Root", new XAttribute("CategoryName", model.CategoryName), new XAttribute("CategoryIdentifies", CategoryIdentifies), new XAttribute("ParentIdentifies", model.ParentIdentifies), new XAttribute("sort", model.Sort));
                        sElement.Add(pElement);
                       
                    }
                }
            }
            var id = model.CategoryId = Guid.NewGuid();//生成一個GUID
            //保存對xml的更改操作
            rootNode.Save(HttpRuntime.AppDomainAppPath + "Runtime/Category.xml");
            return RedirectToAction("CategoryList");
        }

view視圖這塊大家可以自己寫,按照自己的喜好,也可以寫成樹,

xml結果:

注意規則,這個規則是進行查詢用的

<?xml version="1.0" encoding="utf-8"?>
<Category>
  <Controller name="AdminPublish">
    <Root CategoryName="etre" CategoryIdentifies="100" ParentIdentifies="0" sort="1">
      <Root CategoryName="wet" CategoryIdentifies="100100" ParentIdentifies="100" sort="1">
        <Root CategoryName="wetsryerset" CategoryIdentifies="100100100100" ParentIdentifies="100100" sort="1" />
      </Root>
      <Root CategoryName="wetsryer" CategoryIdentifies="100101" ParentIdentifies="100" sort="1" />
      <Root CategoryName="wetsryersetewt" CategoryIdentifies="100102" ParentIdentifies="100" sort="1" />
    </Root>
  </Controller>
</Category>

 

我實現的功能是一個產品分類(聯動)查詢


 

注意這是聯動,這個聯動是根據 ParentIdentifies這個字段進行查詢的,注意查看數據庫表結構規則,和xml規則,有人可能問了,為什麼不直接操作數據庫,卻操作xml,原因很簡單,減少數據庫壓力,在這裡不一一講述了,希望能幫到大家,謝謝

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved