首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

100分 怎么将如下的XML解析成数据库

2012-02-23 
100分求助 如何将如下的XML解析成数据库XML文件内容:

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

热点排行