XElement 怎么在指定节点添加子节点

XElement 怎么在指定节点添加子节点,第1张

首先获取想要复制节点添加

 XElement rootNode = XElement.Load("test.xml")

            var result = from m in rootNode.Elements ("MM02")

                         where m.Attribute ("id").Value =="1"

                         select new 

                             {

                                 id=m.Attribute ("id").Value ,

                                 fname = m.Element ("FNAM").Value ,

                                 fval = m.Element("FVAL").Value  

                             }

             

            foreach (var s in result)

            { 

                XElement x = 

                    new XElement("MM02", new XAttribute("id",s.id ),

                    new XElement ("FNAM",s.fname ),

                    new XElement ("FVAL",s.fval)

                    )

                XElement node = rootNode.Element("MM02")

                rootNode.Element("MM02").AddAfterSelf(x)

                rootNode.Save("test.xml")

            }

这个是修改后的...

private void AddXml(string url, string title, string description, string target, int btn)

{

XmlDocument xmlDoc = new XmlDocument()

xmlDoc.Load("../../XMLFile.xml") //加载xml文件

XmlNode rootXml = xmlDoc.SelectSingleNode("siteMapPath") //查询XML文件的根节点("siteMapPath")

XmlNode xn = rootXml.SelectSingleNode("siteMap") //查询节点("siteMap")

if (btn == 1)

{

XmlElement xe = xmlDoc.CreateElement("siteMap") //创建节点("siteMap")

//设置新建节点("siteMap")的相关属性

xe.SetAttribute("url", url)

xe.SetAttribute("title", title)

xe.SetAttribute("description", description)

xe.SetAttribute("target", target)

if (xn.Attributes["title"].Value.Equals("教学管理"))

{

rootXml.InsertAfter(xe, xn) //将新建的节点xe放置于xn节点后

}

}

else

{

XmlNodeList xnl = xn.SelectNodes("siteMapNode") //获取所有节点为"siteMapNode"的节点

foreach (XmlNode xnItem in xnl)

{

XmlElement xe = (XmlElement)xnItem//将子节点类型转换为XmlElement类型

if (xe.GetAttribute("title").Equals("院系介绍"))//判断条件

{

XmlElement newXE = xmlDoc.CreateElement("siteMapChildNode")

newXE.SetAttribute("url", url)

newXE.SetAttribute("title", title)

newXE.SetAttribute("description", description)

newXE.SetAttribute("target", target)

xnItem.AppendChild(newXE)

}

}

}

xmlDoc.Save("../../XMLFile.xml")

}

private void button1_Click(object sender, EventArgs e)

{

this.AddXml("", "实践教学", "", "_self", 1)

MessageBox.Show("添加实践教学成功...")

}

private void button2_Click(object sender, EventArgs e)

{

this.AddXml("", "工商学院", "", "_self", 2)

MessageBox.Show("添加工商学院成功...")

}

应该就可以了, 你试看看吧.

呵呵O(∩_∩)O~ 赏分就算了, 回答你这个我也学到了东西. 呵呵

using System.Xml.Linq

XElement document = XElement.Load("地址")

//得到根节点

XElement root = document.Element("节点名称")


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11737625.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存