<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="POP3" value="192.168.0.2" />
    <add key="UserName" value="[email protected]" />
    <add key="UserPwd" value="abc" />
  </appSettings>
</configuration>我有上面一个xml文件,要用程序去修改它我自己的程序是这样的,
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.Load("CheckEmail.exe.config");
XmlNodeList nodeList=xmlDoc.SelectSingleNode("//configuration/appSettings").ChildNodes;//获取add节点的所有子节点

foreach(XmlNode xn in nodeList)//遍历所有子节点
{
XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
if(xe.GetAttribute("key")=="POP3")//如果key属性值为“POP3”
{
xe.SetAttribute("value",txtPOP3.Text);//则修改该属性
}
if(xe.GetAttribute("key")=="UserName")//如果key属性值为“UserName”
{
xe.SetAttribute("value",txtUserName.Text);//则修改该属性
}
if(xe.GetAttribute("key")=="UserPwd")//如果key属性值为“UserPwd”
{
xe.SetAttribute("value",txtUserPwd.Text);//则修改该属性
}xmlDoc.Save("CheckEmail.exe.config");//保存。

解决方案 »

  1.   

    xmlDoc.Load("CheckEmail.exe.config");//注意路径,如果是web要用Server.MapPath()foreach(XmlNode xn in nodeList)//遍历所有子节点
    {
    XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
    if(xe.GetAttribute("key")=="POP3")//如果key属性值为“POP3”
    {
    xe.SetAttribute("value",txtPOP3.Text);//则修改该属性
    }
    if(xe.GetAttribute("key")=="UserName")//如果key属性值为“UserName”
    {
    xe.SetAttribute("value",txtUserName.Text);//则修改该属性
    }
    if(xe.GetAttribute("key")=="UserPwd")//如果key属性值为“UserPwd”
    {
    xe.SetAttribute("value",txtUserPwd.Text);//则修改该属性
    }
    }
    xmlDoc.Save("CheckEmail.exe.config");//保存。
      

  2.   

    xmlDoc.Load("CheckEmail.exe.config");//注意路径,如果是web要用Server.MapPath()
    xmlDoc.Save("CheckEmail.exe.config");//保存。如果是web要用Server.MapPath()
    另外注意权限,和txtUserName.Text等内容的合法性,应该可以了
      

  3.   

    XmlElement xe=(XmlElement)xn;//将子节点类型转换为XmlElement类型
    上面这条语句可能会报错吧,
    修改
    XmlElement xe=xn as XmlElement ;//子节点又可能不是XmlElement类型。
    if(xe == null)
    {
       continue;
    }