根据父级节点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文件
        }

///上述代码有删改,仅供学习交流参考之用
posted @ 2013-05-05 00:07  WikiZhao  阅读(377)  评论(0编辑  收藏  举报
Copyright©2013-2014 WikiZhao