我有1个xml文档,我想将其中数据插入数据库,通过模型层的对象来实现,因为一个节点相当于1个表
xml文档:
<books>
    <book>
       <aut>aaa</aaa>
       <Createtime>2009</Createtime>
    </book>
    <book>
       <aut>aaa</aaa>
       <Createtime>2009</Createtime>
    </book>
   <book>
       <aut>aaa</aaa>
       <Createtime>2009</Createtime>
    </book>
</books>
Model中bookpublic class book
{
    private string aut;
    private datetime Createtime;    public string aut
    {
       get{return aut};
       set{aut=value};
    }    public datetiem Createtime
    {
       get{return Createtime};
       set{Createtime=value};
     } 
    public book(int aut,datetime Createtiem)
     {
        this.aut=aut;
        this.Createtime=Createtime;
      }
  }
怎么把xml通过模型层book进行数据库保存啊

解决方案 »

  1.   


    XmlDocument xml = new XmlDocument();
    xml.Load(Path.Combine(Application.StartupPath, "xxx.xml"));//应用程序同一目录 .exe目录
    XmlNodeList xn = xml.SelectNodes("books/book");
    DataTable xmltable = new DataTable();
    //定义表标题
    foreach (XmlNode x in xn)
    {
        foreach (XmlNode xx in x.ChildNodes)
        {
            DataColumn col = new DataColumn(xx.Name.ToString());
            xmltable.Columns.Add(col);
        }
          break;
        }
            foreach (XmlNode x in xn)
          {
              DataRow dr = xmltable.NewRow();
              for (int i = 0; i < x.ChildNodes.Count; i++)
            {
                XmlNode xx = x.SelectSingleNode(xmltable.Columns.ToString());
                dr = xx.InnerText;
            }
            xmltable.Rows.Add(dr);
    }然后批插入
      

  2.   

    不好意思 弄错了XmlDocument xml = new XmlDocument();
                 xml.Load(Path.Combine(Application.StartupPath, "xml.xml"));//应用程序同一目录 .exe目录
                 XmlNodeList xn = xml.SelectNodes("books/book");
                 DataTable xmltable = new DataTable();
                 //定义表标题
                 foreach (XmlNode x in xn)
                 {
                     foreach (XmlNode xx in x.ChildNodes)
                     {
                         DataColumn col = new DataColumn(xx.Name.ToString());
                         xmltable.Columns.Add(col);
                     }
                     break;
                 }
                 foreach (XmlNode x in xn)
                 {
                     DataRow dr = xmltable.NewRow();
                     for (int i = 0; i < x.ChildNodes.Count; i++)
                     {
                         XmlNode xx = x.SelectSingleNode(xmltable.Columns[i].ToString());
                         dr[i] = xx.InnerText;
                     }
                     xmltable.Rows.Add(dr);
                 } dataGridView1.DataSource = xmltable;