如题,数据库表和xml怎么关联。
现在数据库有一个表,xml其实也相当于一个表。
这两个中数据应该是有关联的,请问如何关联?
关联的话应该就是表中字段和xml中的节点关联了吧?

解决方案 »

  1.   


    string datafile = "data1.xml";
    StreamReader sr = new StreamReader(datafile);
    XmlDataDocument datadoc = new XmlDataDocument();
    datadoc.DataSet.ReadXml(sr);
    datadoc.DataSet.Tables[0];//这个就是你要的datatable
      

  2.   

    平时都是数据库中两个表的字段相关联,现在是xml和数据库里的表相关联。
    我觉得应该是xml某节点和数据库表字段相关联吧?可是具体咋做呢?
    各位大侠帮忙解答下噻~ 急啊……
      

  3.   

    首先数据库里建立一张表,然后在程序中写一个类,注意类里面的成员变量与表的字段名要相对应,然后再写一个XML文件,也与之对应。
    举个简单的例子
    类的建立
        public class TableModel
        {
            private string _engName;            //表的英文名
            private string _chnName;            //表的中文名
            private List<ColumnModel> _columns = new List<ColumnModel>(); //字段结构
        }
            public class ColumnModel
        {
            private string _engName;            //表中字段名
            private string _chnName;
            private bool _isPrimary;
            private FieldType _fieldType;
        }
    XML文档
    <?xml version="1.0" encoding="utf-8"?>
    <TableModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <EngName>xxxx</EngName>
      <ChnName>xxxxxxx</ChnName>
      <Columns>
        <ColumnModel>
          <EngName>id</EngName>
          <ChnName>识别号</ChnName>
          <IsPrimary>true</IsPrimary>
          <FieldType>INT</FieldType>
        </ColumnModel>
      </Columns>
    </TableModel>
    字段名要对应,字段结构用list来表示。
    然后创建一个类对象,
    TableModel object = MyXmlSerializer<TableModel>.Read(这里写xml文档的路径);
    这样就读进来了。
    每个ColumnModel跟表的字段相对应,其中的内容就是字段的属性。
    希望对你有帮助
      

  4.   

    啊?xml节点名必须和字段名一样吗?
      

  5.   

     重构一张表 字段自己顶。循环xml文件节点。赋值给重构表的字段,然后在关联
      

  6.   

     仅供参考using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using System.Xml;namespace BLL.CustomerProductsEnum
    {
       public abstract class Custom_Orm_type
        {
           public static DataTable NodeTypes(string xmlfile)
           {
               List<string> types = new List<string>();
               string NodeId = null;
               DataTable Table = new DataTable();
               DataRow row;
               int i = 0;
               DataColumn dc = null;
               dc = Table.Columns.Add("ID", Type.GetType("System.Int32"));
               dc.AutoIncrement = true;//自动增加
               dc.AutoIncrementSeed = 1;//起始为1
               dc.AutoIncrementStep = 1;//步长为1
               dc.AllowDBNull = true;//           dc = Table.Columns.Add("NodeId", Type.GetType("System.String"));
               dc = Table.Columns.Add("ParentId", Type.GetType("System.String"));
               dc = Table.Columns.Add("NodeName", Type.GetType("System.String"));           if (xmlfile.Length > 0)
               {
                   XmlDocument xd = new XmlDocument();
                   xd.Load(xmlfile);
                   XmlNodeList list = xd.DocumentElement.ChildNodes;
                   foreach (XmlElement element in list)
                   {
                       if (element.Name.ToLower() == "file")
                       {
                           row = Table.NewRow();
                           row["NodeId"] = Convert.ToString(element.Attributes["NodeId"].InnerXml);
                           row["ParentId"] = Convert.ToString(element.Attributes["ParentId"].InnerXml);
                           row["NodeName"] = Convert.ToString(element.Attributes["NodeName"].InnerXml);                       Table.Rows.Add(row);
                       }
                   }
               }
               return Table;
           }
        }

      

  7.   

    直接关联是不行滴,再建一张表,把xml数据对应上去,然后再做两个表的关联。