我现在有若干个student.xml和class.xml文件,格式如下:
student.xml:-<NewDataSet>
               -<dt>
                  <id>001</id>
                  <name>aaa</name>
                  <age>14</age>
                </dt>
              -<dt>...省略</dt>
             </NewDataSet>
class.xml:-<NewDataSet>
               -<dt>
                  <id>001</id>
                  <math>90</math>
                  <english>80</english>
                  <date>2009.9.11</date>
                </dt>
              -<dt>...省略</dt>
             </NewDataSet>
现在我想通过fileupload控件从客户端上传xml文件到服务器并在服务器端自动将上传的xml的数据写入数据库.
问题1:怎样上传至服务器端?怎样把xml的内容写入数据库?
btn_onclick事件string strPath = FileUpload1.PostedFile.FileName;
string Serverpath = Server.MapPath(strPath.Substring(strPath.LastIndexOf("\\") + 1));
FileUpload1.PostedFile.SaveAs(Serverpath);后面再加上XmlDocument xmldoc = new XmlDocument();
string fileName = FileUpload.PostedFile.FileName;
xmldoc.Load(fileName);
if (fileName != "")
{
XmlNodeList nodes = xmldoc.SelectNodes("NewDataSet/dt");
if (nodes != null)
{
foreach (XmlNode node in nodes)
{
...省略,添加到库
}是这样吗????????????????????????????????
问题2:怎样判断xml文件的内容是否符合其相应的库?例如:我点击上传按钮上传了一个student.xml这过程中我激发了btn_onclick事件,但我怎样使xml文件的内容添加到student库中,而不是class库?难道要设计两个上传按钮=.=!!
问题3:怎样判断是否已经上传过一个文件的内容??例如:我以前上传过一个student1.xml现在再上传一个student2.xml但student2.xml中的内容同student1.xml的内容相同,现在我需要怎样才能判断xml文件的内容是否应该写入数据库??
问题4:怎样设置xml文件在服务器中存在的时间??例如:我上传一个xml文件,30天后该xml文件自动删除??
拜托各位大大们多多指点~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

解决方案 »

  1.   

    第一点:思路是对的;
    第二点:判断具体上传到哪个库,你可以根据上传的文件名称或者再在XML文件里面加个关联节点,标志数据库;
    第三点:不是太明白你的意思,是内容一样不传,还是覆盖以前的内容?;
    第四点:可以根据XML创建的时间去删除[名称不一样如student1.xml,student2.xml],假如名称一样的话,可以
    根据最后一次修改时间去删除,或者可以取一个有时间定义的名称,如200911241303.xml,200911241753.xml;
      

  2.   

    问题1:怎样上传至服务器端?怎样把xml的内容写入数据库? 
    btn_onclick事件中不是上传了吗?xmldoc.innerXML就是XML的内容,直接保存到数据库就好了。
    问题2:怎样判断xml文件的内容是否符合其相应的库?例如:我点击上传按钮上传了一个student.xml这过程中我激发了btn_onclick事件,但我怎样使xml文件的内容添加到student库中,而不是class库?难道要设计两个上传按钮=.=!
    你设计的XML格式对这样的需求不利,不过你可以判断下节点是否存在,比如xmldoc["NewDataSet"]["dt"]["name"] != null 来判断是student类型。
    问题3:怎样判断是否已经上传过一个文件的内容??例如:我以前上传过一个student1.xml现在再上传一个student2.xml但student2.xml中的内容同student1.xml的内容相同,现在我需要怎样才能判断xml文件的内容是否应该写入数据库?? 
    你所说的内容相同应该是说某个节点的数据相同,一般是这样判断的,获取现在要上传的XML文件,里面有一个id节点,区出来和数据库中的XML的该节点相比较,建议将ID写到一个单独的字段中。
    问题4:怎样设置xml文件在服务器中存在的时间??例如:我上传一个xml文件,30天后该xml文件自动删除?? 
    这个需要借助触发器就好了,定时判断文件写入的时间,超过30天,就删除这个记录就好了,然后,用程序判断不存在数据库中的XML文件都删除掉,这个部分使用应用程序来完成比较方便。
      

  3.   

    我的意思就是出现重复上传,怎样使已上传过的文件内容不再次写入数据库,拿class表举例:
    表里有idsub(主键)、id、math、english、date
    xml里有id、math、english、date
    现在xml里有一条数据的id、math、english、date与表中的数据完全相同,这种情况下应该怎样处理??
      

  4.   

     那就只能把XML文件上传到服务器,再与数据库里的数据作对比了(或者以前XML文件,没删除情况下)
      

  5.   

    sql 2005可以直接解读xml文件。另外,如果楼主漫无目的的上传xml文件,在服务器端解析,那样,负荷也太大了吧。
      

  6.   

    .........我不是本地解读,是从异地传输xml到服务器然后自动添加到数据库