{
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Table>
<ID>1</ID>
<TEXT>AAA</TEXT>
<BELONG>0</BELONG>
</Table>
<Table>
<ID>2</ID>
<TEXT>BBB</TEXT>
<BELONG>0</BELONG>
</Table>
<Table>
<ID>3</ID>
<TEXT>CCC</TEXT>
<BELONG>0</BELONG>
</Table>
</NewDataSet>
}
FirstXml.xsd
{
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool to store the dataset designer's layout information.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DiagramLayout xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd=" http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="0" ViewPortY="0" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:Table" ZOrder="1" X="70" Y="70" Height="79" Width="150" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="22" SplitterPosition="75" />
</Shapes>
<Connectors />
</DiagramLayout>
}
2.下面的代码会将上面的XML文档写入数据库
public void ReadXmlToSaveToTableMethordone()
{
SqlConnection conn = new SqlConnection("server=david;database=test;uid=sa;pwd=");
conn.Open();
XmlDocument xd = new XmlDocument();
xd.Load(Server.MapPath("~//") + "FirstXml.xml");
XmlNodeList xn = xd.SelectNodes("NewDataSet/Table");
string text;
int belong;
for (int i = 0; i < xn.Count; i++)
{
XmlNode id = xn[i].SelectSingleNode("ID");
text = xn[i].SelectSingleNode("TEXT").InnerText;
belong = Convert.ToInt32(xn[i].SelectSingleNode("BELONG").InnerText);
Response.Write(id.InnerText.ToString() + "|" + text + "|" + belong + "<br>");
SqlCommand comm = new SqlCommand("insert into tree(text,belong) values('"+text+"',"+belong+")",conn);
comm.ExecuteNonQuery();
}
conn.Close();
}
你在需要的时候调用此方法就可以将XML文档中的内容写入数据库.
3.也可以将XML文档读入到DATASET中,如果您添加了一个GRIDVIEW(VS2005)或者GRIDVIEW(VS2003),就可以显示DATASET中的数据了,代码如下:
{public void Show()
{
ReadTableToXml();
DataSet ds = new DataSet();
string pathxml = Server.MapPath("~//") + "FirstXml.xml";
string pathxsd = Server.MapPath("~//") + "FirstXml.xsd";
ds.ReadXmlSchema(pathxsd);
ds.ReadXml(pathxml);
this.GridView1.DataSource = ds.Tables["Table"];
this.GridView1.DataBind();
}
4.在2中是将XML文档直接写入数据库的,那么有人会问,是不是可以先将XML文档读入DATASET中,然后将DATASET中的内容更新到数据库 中?答案是肯定的.咱们现在就以上面的XML文档为例,在操作之前应该先建立一个和XML文档的数据结构相同数据库.其实在2中也是这么做的.这个数据库 就上TEST,所用的数据表就是TREE.下面的代码实现了上述的功能.
public void ReadXmlToSaveToTableMethordone()
{
SqlConnection conn = new SqlConnection("server=david;database=test;uid=sa;pwd=");
SqlDataAdapter da = new SqlDataAdapter("select * from tree where id=-1", conn);
SqlCommandBuilder cbuider = new SqlCommandBuilder(da);
DataSet ds = new DataSet();
da.Fill(ds);
string pathxml = Server.MapPath("~//") + "FirstXml.xml";
string pathxsd = Server.MapPath("~//") + "FirstXml.xsd";
ds.ReadXmlSchema(pathxsd);
ds.ReadXml(pathxml);
da.Update(ds);
Response.Write("okokokokokok");
}
到此为至,你就会发现,将一个XML文档写入数据库有两中方案,一种是直接将XML文档写入数据库,就如2,另一种是将XML文档先读如到DATASET,然后将DATASET中的内容写入数据库.