<?xml version="1.0" encoding="utf-8" ?>
<customer>
<Campaign>
<Group>
<id></id>
<keys></keys>
<re></re>
</Group>
</Campaign>
</customer>
xml文件的模版如上(文件名customerReFrame.xml)
using(DataSet ds = new DataSet())
{
ds.ReadXmlSchema("customerReFrame.xml");
ds.ReadXml(dir,XmlReadMode.IgnoreSchema);
DataRow dr = ds.Tables["Group"].NewRow();
dr["id"] = groupid;
dr["keys"] = keys;
dr["re"] = re; 
ds.Tables["Group"].Rows.Add(dr);
ds.WriteXml(dir);
}这样添加一条新记录后,,Campaign这个节点就丢失了,xml文件成了这样<?xml version="1.0" standalone="yes"?>
<customer>
  <Group>
    <id>aaa</id>
    <keys>this</keys>
    <re>this</re>
  </Group>
</customer>
这是为什么泥?????????????????????

解决方案 »

  1.   

    你那里没有选择要写入那个节点下面,当然要覆盖了。
    XmlDocument doc = new XmlDocument();
                    doc.Load("config.xml");
                    XmlNode xNode = doc.SelectSingleNode("customer/Campaign");
                    XmlElement xElement = doc.CreateElement("Group");
                    .....                 xNode.AppendChild(xElement);
                    doc.Save("config.xml");
      

  2.   

    我用你的代码试的结果不一样。。奇怪。。
    我的结果是:
    <?xml version="1.0" standalone="yes"?>
    <customer>
      <Campaign>
        <Group>
          <id />
          <keys />
          <re />
        </Group>
      </Campaign>
      <Group>
        <id>11</id>
        <keys>keys</keys>
        <re> re</re>
      </Group>
    </customer>
      

  3.   

    这样试试:
                    ds.ReadXml(@"../../customerReFrame.xml");
                    DataRow dr = ds.Tables["Group"].NewRow();
                    dr["id"] = "groupid";
                    dr["keys"] = "keys";
                    dr["re"] = "re";
                    ds.Tables["Group"].Rows.Add(dr);
                    ds.WriteXml(@"../../customerReFrame.xml");