根据父级节点ID更新子节点,简单xml操作

功能实现:根据父级节点ID更新子节点,简单xml操作
示例XML:

<nav>



<item name="Node1" id="x1">

<sub link="url0">NodeName0</sub>

<sub link="url1">NodeName1</sub>

<sub link="url2">NodeName2</sub>

</item>







<item name="Node2" id="x2">

<sub link="url0">NodeName0</sub>

<sub link="url1">NodeName1</sub>

<sub link="url2">NodeName2</sub>

</item>





<item name="Node3" id="x3">

<sub link="url0">NodeName0</sub>

<sub link="url1">NodeName1</sub>

<sub link="url2">NodeName2</sub>

</item>





</nav>

方法:

//动态更新XML二级节点



        private void CreateNode()

        {

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.Load(xmlPath);//xmlPath为xml文件网站相对路径

            XmlNodeList nodeList = xmlDoc.SelectSingleNode("nav").ChildNodes;//搜寻根节点nav下的子节点

            foreach (XmlNode xn in nodeList)

            {

                XmlElement xe = (XmlElement)xn;

                if (xe.GetAttribute("id") == "x1")//搜寻nav下一级id为x1的子节点(该节点不唯一,但ID唯一)

                {

                    XmlNodeList nls = xe.ChildNodes;//继续获取xe子节点的所有子节点  



                    //foreach(XmlNode xn1 in nls)//遍历  

                    //{

                    //    XmlElement xe2 = (XmlElement)xn1;//转换类型 



                    //下面你懂的

                    StringBuilder strB = new StringBuilder();

                    DataTable dt = InfoHelper.ExecuteSQL("select here from Table where there ");

                    if (dt != null)

                    {

                        for (int i = 0; i < dt.Rows.Count; i++)

                        {

                            strB.Append("<sub link=\"/About/biz.aspx?nc=" + dt.Rows[i]["nodecode"] + "\">" + dt.Rows[i]["nodename"] + "</sub>");

                        }

                    }

                    xe.InnerXml = strB.ToString();

                    // }

                }

            }

           xmlDoc.Save(xmlPath);//保存XML文件

        }

///上述代码有删改,仅供学习交流参考之用

你可能感兴趣的:(xml)