c# 在xml 跟节点下添加子节点

c# 在xml 跟节点下添加子节点,第1张

这个是修改后的...

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~ 赏分就算了, 回答你这个我也学到了东西. 呵呵

xmlDoc.Load("titles.xml")//加载xml文件,路径未指定时默认在当前项目环境下 XmlNode root = xmlDoc.SelectSingleNode("items")//选择要添加子节点的items节点 XmlElement xe1 = xmlDoc.createElement_x("item")//创建一个具有指定名称的子节点 xe1.SetAttribute("类别", "张三")//设置item的属性 及属性值

在xml文件有多个命名空间时,你的xml各种类型中的元素在没有确切指明其命名空间的情况下,它的命名空间就是默认命名空间(一般问xml文档根节点中指定命名空间的第一个属性)。当你添加节点时,若没有指明该节点的命名空间时,不会使用默认命名空间的,会添加:xmls=“”,作为默认命名空间。

所以,解决的方式当然就是在添加节点时就指明其命名空间就是咯。

命名空间使用方法:

XmlNamespaceManager nsmgr = new XmlNamespaceManager(new XmlDocument().NameTable) //声明一个命名空间管理器

nsmgr.AddNamespace(“ns”, xmlUrl)//向管理器添加一个命名空间连接,其中ns为添加命名空间的名称,xmlUrl为命名空间的链接。两个参数都是string类型。

jobNode.SelectSingleNode("ns:trigger/ns:cron", nsmgr)//使用命名空间查找节点。注意其中的ns和nsmgr

其实对于你的问题只需要在创建要加入的节点时指明一个xmlUrl就可以啦:

XmlElement jobElement = xmlDoc.CreateElement("job", xmlUrl)


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

原文地址:https://54852.com/bake/7968742.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存