数据库表和xml怎么关联 如题,数据库表和xml怎么关联。现在数据库有一个表,xml其实也相当于一个表。这两个中数据应该是有关联的,请问如何关联?关联的话应该就是表中字段和xml中的节点关联了吧? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 string datafile = "data1.xml";StreamReader sr = new StreamReader(datafile);XmlDataDocument datadoc = new XmlDataDocument();datadoc.DataSet.ReadXml(sr);datadoc.DataSet.Tables[0];//这个就是你要的datatable 平时都是数据库中两个表的字段相关联,现在是xml和数据库里的表相关联。我觉得应该是xml某节点和数据库表字段相关联吧?可是具体咋做呢?各位大侠帮忙解答下噻~ 急啊…… 首先数据库里建立一张表,然后在程序中写一个类,注意类里面的成员变量与表的字段名要相对应,然后再写一个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跟表的字段相对应,其中的内容就是字段的属性。希望对你有帮助 啊?xml节点名必须和字段名一样吗? 重构一张表 字段自己顶。循环xml文件节点。赋值给重构表的字段,然后在关联 仅供参考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; } }} 直接关联是不行滴,再建一张表,把xml数据对应上去,然后再做两个表的关联。 C#判断一个字符串必须包含两种以上的字符 一个SiteMap的问题..很急, 一个关于存储过程返回的问题,大家来帮帮忙 textBox1显示小数 ODP.NET的问题 想做一个操作,当点FileUPLoad的浏览键然后装入图片。再点“上传”按钮图片文件存入sql数据库里。 WebResponse读取网页出现无法连接远程服务器的现象,如何解决? 请推荐设计模式写得比较好的C#源吗 校园网自动出校软件---校园网登入器 在线等,解决马上结贴======================================== C# 4.0 如何判断按下组合键 怎么用js或者后台代码来获得下拉框的值
string datafile = "data1.xml";
StreamReader sr = new StreamReader(datafile);
XmlDataDocument datadoc = new XmlDataDocument();
datadoc.DataSet.ReadXml(sr);
datadoc.DataSet.Tables[0];//这个就是你要的datatable
我觉得应该是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跟表的字段相对应,其中的内容就是字段的属性。
希望对你有帮助
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;
}
}
}