为什么我新加入的节点总是覆盖了前一个节点???

KissApple 2011-07-16 01:12:51
string con = "";
if (cboDataType.SelectedItem.ToString() == "a")
{
XmlControl.CreateXmlDocument(GlobalParams.APP_FILE_FULLNAME_CONFIG, "DBS", "UTF-8");
XmlControl xml1 = new XmlControl(GlobalParams.APP_FILE_FULLNAME_CONFIG);
con = @" Data Source={0};initial catalog={1};persist security info=true;user id={2};pwd={3}";
con = string.Format(con, txtServer.Text, txtDataBase.Text, txtUserName.Text, txtPwd.Text);
XmlControl.InsertNode("DBS", "Da", "connectionstring", con);
XmlControl.InsertElement("DBS/Da", "providerName", cboDataType.SelectedItem.ToString());

XmlControl.Save();
}
else
{
XmlControl.CreateXmlDocument(GlobalParams.APP_FILE_NAME_CONFIG, "DBS", "UTF-8");
XmlControl xml1 = new XmlControl(GlobalParams.APP_FILE_FULLNAME_CONFIG);
con = @"Data Source={0};Persist Security Info=True;User ID={1};Password={2};Unicode=True";
con = string.Format(con, txtServer.Text, txtUserName.Text, txtPwd.Text);
XmlControl.AddParentNode(GlobalParams.APP_FILE_NAME_CONFIG, "Db");
XmlControl.InsertNode("DBS", "Db", "connectionstring", con);
XmlControl.InsertElement("DBS/Db", "providerName", cboDataType.SelectedItem.ToString());

XmlControl.Save();

}
执行完2次后按逻辑应该有2个节点的,但为什么每次后一个节点都覆盖了前一个节点呢?
...全文
136 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
看错了,不好意思
  • 打赏
  • 举报
回复
XmlControl.AddParentNode(GlobalParams.APP_FILE_NAME_CONFIG, "Db");
XmlControl.InsertNode("DBS", "Db", "connectionstring", con);
XmlControl.InsertElement("DBS/Db", "providerName", cboDataType.SelectedItem.ToString());
你断点调试下三面上句就知道了,用GlobalParams.APP_FILE_NAME_CONFIG作为参数来构造来XmlControl是否好些?还有你上面的代码有些可以提供if-else外面去
余山水 2011-07-16
  • 打赏
  • 举报
回复
xdoc.DocumentElement.PrependChild(Node);
这个是在当前节点的子节点列表的开始处创建一个新的子节点。所以会自动覆盖。你用其他节点可以的
KissApple 2011-07-16
  • 打赏
  • 举报
回复
另外请2位到我另一个帖子里看下,关于sqlserver和oracle数据库存储过程的一些问题,能否给点提示,谢谢
http://topic.csdn.net/u/20110716/14/83c3185d-8071-4c55-a6eb-5f5920b9caf2.html
KissApple 2011-07-16
  • 打赏
  • 举报
回复
xmlcontrol是我自己的类,
/// 在根节点下添加父节点
/// </summary>
public static void AddParentNode(string xmlPath, string parentNode)
{
XmlDocument xdoc = new XmlDocument();
xdoc.Load(xmlPath);
// 创建一个新的menber节点并将它添加到根节点下
XmlElement Node = xdoc.CreateElement(parentNode);
xdoc.DocumentElement.PrependChild(Node);
xdoc.Save(xmlPath);
}
这段应该是可以添加节点的,是不是哪有问题,导致每次都覆盖了前一个节点?

之前试过,如果在一段代码中一次执行添加节点1再添加节点2是可以的,但如果添加了节点1,执行完毕后单击按钮再添加节点2就覆盖了前节点了
  • 打赏
  • 举报
回复
可能是这个原因,执行完后,程序要重启一次,Config才会从bin/debug/AppName.ServerHost.config上面应用更改
代码看着有点头大
孟子E章 2011-07-16
  • 打赏
  • 举报
回复
可以使用InsertBefore,InsertAfter等
或者AppendChild方法
http://msdn.microsoft.com/zh-cn/library/system.xml.xmlnode.insertbefore.aspx

XmlControl貌似是你自己的类吧
KissApple 2011-07-16
  • 打赏
  • 举报
回复
救命啊

110,477

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧