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

<?xml version="1.0" encoding="utf-8" ?>
<siteMapPath >
<siteMap url="" title="教学管理" description="" target="_self">
<siteMapNode url="" title="院系介绍" description="" target="_self">
<siteMapChildNode url="" title="金融学院" description="" target="_self"/>
<siteMapChildNode url="" title="经贸学院" description="" target="_self"/>
<siteMapChildNode url="" title="会计学院" description="" target="_self"/>
//想在这添加<siteMapChildNode url="" title="工商学院" description="" target="_self"/>
</siteMapNode>
<siteMapNode url="" title="教学成果" description="" target="_self"/>
//想在这添加<siteMapNode url="" title="实践教学" description="" target="_self"/>
</siteMap>
</siteMapPath>

请问在c# Button1_Click中添加那些代码实现添加<siteMapNode url="" title="实践教学" description="" target="_self"/>
在Button2_Click中添加那些代码实现添加<siteMapChildNode url="" title="工商学院" description="" target="_self"/>
siteMapNode为二级子栏目,siteMapChildNode为三级子栏目

望能给予解决,谢谢!
您的回答很详细,已经看懂了,谢谢!
但是随之又产生了个新问题,望能解决。

我的这个xml为一个网站导航条,由于补充问题限制这里简述了。
<siteMapPath>
<siteMap1 url="" title="教学管理" description="" target="_self">
<siteMapNode url="" title="院系介绍" description="" target="_self">
<siteMapChildNode url="" title="金融学院" description="" target="_self"/>
<siteMapChildNode url="" title="经贸学院" description="" target="_self"/>
</siteMapNode>
<siteMapNode url="" title="教学成果" description="" target="_self"/>
</siteMap1>
<siteMap2 url="" title="实践教学" description="" target="_self"/>

但在调用了this.AddXml2后
原xml位置发生变化了,导航顺序也就错了,变为
<siteMap2 url="" title="实践教学" description="" target="_self"/>
<siteMap1 url="" title="教学管理" description="" target="_self">
<siteMapNode url="" title="院系介绍" description="" target="_self">

请问在能否在储存xml时先按sitMapI进行排序,然后在save吗?
万分感谢 。
悬赏分一会就给你。

第1个回答  推荐于2017-09-11
这个是修改后的...
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~ 赏分就算了, 回答你这个我也学到了东西. 呵呵本回答被提问者采纳
第2个回答  2010-07-29
XmlDocument doc = new XmlDocument();
//获得配置文件的全路径
string strFileName = AppDomain.CurrentDomain.BaseDirectory.ToString() + "配置文件.config";
doc.Load(strFileName);

XmlNode root = doc.DocumentElement;

//创建一个新的元素.
XmlElement elem = doc.CreateElement("price");
elem.InnerText = "19.95";

//添加新的元素
root.InsertBefore(elem, root.FirstChild);

//关闭打开的文档
doc.Save(strFileName);

添加一个按钮事件,在点击事件里添加此代码试试
相似回答