XML:
<?xml version="1.0" encoding="UTF-8"?>
<!--聊天记录-->
<Root>
  <Record>
    <Id>3</Id>
    <SenderName>Administrator</SenderName>
    <ReceiverName>所有人</ReceiverName>
    <Msg>&lt;p&gt;不知道啊&lt;/p&gt;</Msg>
    <SendTime>2009-3-3 10:26:03</SendTime>
  </Record>
</Root>
C#:
 XmlDocument doc = new XmlDocument();
        doc.Load(Server.MapPath("~/XML/ChatRecord.xml"));
        //存储数据
        XmlNode node = doc.SelectSingleNode("/Root/Record/Id");
        node.InnerText = DateTime.Now.Month.ToString();        node = doc.SelectSingleNode("/Root/Record/SenderName");
        node.InnerText = uName;        node = doc.SelectSingleNode("/Root/Record/ReceiverName");
        node.InnerText = user;        node = doc.SelectSingleNode("/Root/Record/Msg");
        node.InnerText = FCKeditor1.Value;        node = doc.SelectSingleNode("/Root/Record/SendTime");
        node.InnerText = DateTime.Now.ToString();        //保存
        doc.Save(Server.MapPath("~/XML/ChatRecord.xml"));
现在的情况是能添加一条聊天记录,但是只有一条,一有新的记录 就覆盖了原有记录。就想问下如何添加新的<Record></Record>节点?每条记录一个<Record></Record>节点!

解决方案 »

  1.   

    通过这句话添加record节点:XmlElement recordNode=xmlDoc.CreateElement("record"); 
      

  2.   

    能说具体点吗?
     XmlElement record = doc.CreateElement("Record");
            
            //存储数据
            XmlNode node = record.SelectSingleNode("/Root/Record/Id");
            node.InnerText = DateTime.Now.Month.ToString();
    结果是node=null啊 是不是我的XML写的有问题?
      

  3.   

    你的问题在于:
    1.没有巡环创建RECORD节点载数据。
    2.在没有巡环创建对应RECORD节点下的子节点(ID、MSG等)的情况下就去用SELECTSINGLENODE方法获取你未创建的节点。这一点你不仿试下,按原有代码运行后,你去获取“/Root/Record/SendTime”这个节点,那么它是不为NULL的,而其它节点可能此时都为NULL,原因就在于此时可能仅存了最后一个覆盖其它节点后的节点信息,而“/Root/Record/SendTime”这个节点可能就是这最后一个节点我大至改了下你的代码,红色部分以后你可添加FOR或FOREACH语句编历:
    XML: 
    <?xml version="1.0" encoding="UTF-8"?> 
    <!--聊天记录--> 
    <Root> 
      <Record> 
        <Id>3 </Id> 
        <SenderName>Administrator </SenderName> 
        <ReceiverName>所有人 </ReceiverName> 
        <Msg>&lt;p&gt;不知道啊&lt;/p&gt; </Msg> 
        <SendTime>2009-3-3 10:26:03 </SendTime> 
      </Record> 
    </Root> 
    C#: 
    XmlDocument doc = new XmlDocument(); 
            doc.Load(Server.MapPath("~/XML/ChatRecord.xml")); 
            //存储数据 
              XmlNode root = doc.DocumentElement;//这里声明XML文件的NODE集合对象以待添加元素(节点)    XmlElement elem = doc.CreateElement("record");//创建新的RECORD节点  XmlElement idNode=xmlDoc.CreateElement("ID"); //创建ID节点
    idNode.InnerText= DateTime.Now.Month.ToString(); //为ID节点赋值
    elem.AppendChild(idNode);//添加到RECORD节点下XmlElement senderNameNode=xmlDoc.CreateElement(“senderName”);//创建senderName节点
    senderNameNode.InnerText= uName; //为senderName节点赋值
    elem.AppendChild(senderNameNode);//添加到RECORD节点下
    XmlElement ReceiverNameNode=xmlDoc.CreateElement(“ReceiverName”);//创建ReceiverName节点
    ReceiverNameNode.InnerText= user; //为ReceiverName节点赋值
    elem.AppendChild(ReceiverNameNode);//添加到RECORD节点下XmlElement  MsgNode=xmlDoc.CreateElement(“Msg”);//创建Msg节点
    ReceiverNameNode.InnerText= FCKeditor1.Value;  //为Msg节点赋值
    elem.AppendChild(MsgNode);//添加到RECORD节点下
    XmlElement  SendTimeNode=xmlDoc.CreateElement(“SendTime”);//创建SendTime节点
    SendTimeNode.InnerText= FCKeditor1.Value;  //为SendTime节点赋值
    elem.AppendChild(SendTimeNode);//添加到RECORD节点下
    root.AppendChild(elem);//将新RECORD节点加入到该XML文件的NODE集中(根节点中)
    doc.Save(Server.MapPath("~/XML/ChatRecord.xml"));
    /*保存,请注意这最后一句代码别写入巡环  中,否则卡死浪费服务器资源。*/