100分求助 如何将如下的XML解析成数据库
XML文件内容:
===============================================================
- <NewTables>
- <NewTable Name= "AA ">
<PK> False </PK>
<COLUMNNAME> Test1 </COLUMNNAME>
<DATATYPE> integer </DATATYPE>
<LENGTH> 4 </LENGTH>
<ALLOWNULLS> True </ALLOWNULLS>
</NewTable>
- <NewTable Name= "AA ">
<PK> False </PK>
<COLUMNNAME> Test2 </COLUMNNAME>
<DATATYPE> integer </DATATYPE>
<LENGTH> 4 </LENGTH>
<ALLOWNULLS> True </ALLOWNULLS>
</NewTable>
- <NewTable Name= "AA ">
<PK> False </PK>
<COLUMNNAME> Test3 </COLUMNNAME>
<DATATYPE> integer </DATATYPE>
<LENGTH> 4 </LENGTH>
<ALLOWNULLS> True </ALLOWNULLS>
</NewTable>
- <NewTable Name= "BB ">
<PK> False </PK>
<COLUMNNAME> TestBB1 </COLUMNNAME>
<DATATYPE> integer </DATATYPE>
<LENGTH> 4 </LENGTH>
<ALLOWNULLS> True </ALLOWNULLS>
</NewTable>
- <NewTable Name= "BB ">
<PK> True </PK>
<COLUMNNAME> TestBB2 </COLUMNNAME>
<DATATYPE> integer </DATATYPE>
<LENGTH> 4 </LENGTH>
<ALLOWNULLS> False </ALLOWNULLS>
</NewTable>
- <NewTable Name= "BB ">
<PK> False </PK>
<COLUMNNAME> TestBB3 </COLUMNNAME>
<DATATYPE> integer </DATATYPE>
<LENGTH> 4 </LENGTH>
<ALLOWNULLS> True </ALLOWNULLS>
</NewTable>
</NewTables>
===============================================================
能否将这个XML文件生成数据表的两个表AA和BB.盼回复。
[解决办法]
用DataSet的Xml读取 然后转 for循环DataTable insert到数据库里面
[解决办法]
当然可以
dataset.readxml(流或路径);
datatable tableAA = new ...;
datatalbe tableBB = new .....;
foreach(datatable table in dataset)
{
if (table.localname == "NewTable ")
{
//取出newtable的值
//判断是 AA 还是 BB
if(是AA)
//tableAA添加一行
else if(是bb)
//tableBB添加一行
}
}
之后将tableAA tableBB 导入数据库
[解决办法]
XMLDataDocument
using System;
using System.Data;
using System.Xml;
public class Sample
{
public static void Main()
{
//Create an XmlDataDocument.
XmlDataDocument doc = new XmlDataDocument();
//Load the schema file.
doc.DataSet.ReadXmlSchema( "store.xsd ");
//Load the XML data.
doc.Load( "2books.xml ");
//Update the price on the first book using the DataSet methods.
DataTable books = doc.DataSet.Tables[ "book "];
books.Rows[0][ "price "] = "12.95 ";
Console.WriteLine( "Display the modified XML data... ");
doc.Save(Console.Out);
}
} // End class
[解决办法]
同意楼上各位的答复,帮顶!!
[解决办法]
xml反序列化为对象实体,在ddl脚本解释接口中以该对象类型为参数,最后针对该接口分别实现各个数据库的实际脚本解释对象即可
[解决办法]
一个表和两都一样.dataset读取然后insert到数据库
[解决办法]
读取XML的时候判断一下tag,看是AA表还是BB表,然后再导入数据库
[解决办法]
LZ 的 xml 存储的是 【表模式】, 不是数据哦
XmlReader/XmlDocument 读取此 xml 文档
DataTable dt = new DataTable();
dt.Columns.Add(解析得到的列名,解析得到的列数据类型); // 创建列
// ....
[解决办法]
当然可以
dataset.readxml(流或路径);
datatable tableAA = new ...;
datatalbe tableBB = new .....;
foreach(datatable table in dataset)
{
if (table.localname == "NewTable ")
{
//取出newtable的值
//判断是 AA 还是 BB
if(是AA)
//tableAA添加一行
else if(是bb)
//tableBB添加一行
}
}
之后将tableAA tableBB 导入数据库
================================
完全正确
[解决办法]
xmldatadocument!!
[解决办法]
不用那么麻烦...
1.用 Microsoft(R) Xml 架构/数据类型支持实用工具 xsd.exe 生成架构,例如
xsd.exe test.xml
2.将生成的 test.xsd 直接拖进VS打开的项目中,VS会自动生成数据源...
3.更高级的用法是用 xsd.exe 直接生成代码,创建对象数据源...
[解决办法]
我不知道有没有现成的工具
如果是我只能读取XML文件
然后分析字段拼SQL生成相应的表
string sql = " ";
XmlNodeList aa = doc.SelectNodes( "/NewTables/NewTable[@Name= 'AA '] ");
sql = "CREATE TABLE ";
foreach(XmlNode a in aa)
{
sql += " ";//拼接SQL语句
}
//执行SQL语句
XmlNodeList bb = doc.SelectNodes( "/NewTables/NewTable[@Name= 'BB '] ");
//同上
具体怎么拼接语句可以参考http://www.pgsqldb.org/pgsqldoc-7.0c/sql-createtable.htm