功能实现:根据父级节点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文件 }
///上述代码有删改,仅供学习交流参考之用