我通过在c#.net.My中导出我的SQLite数据库生成了一个XML文件,生成的XML如下所示-
<root>
<name1>
<names>
<id>5</id>
<from>Germany</from>
<to>France</to>
<through>
<via>
<id>7</id>
<routeNo>5<routeNo>
<route>Vienna<route>
</via>
</through>
</names>
<names>
<id>10</id>
<from>US</from>
<to>Canada</to>
<through>
<via>
<id>8</id>
<routeNo>10<routeNo>
<route>Mexico<route>
</via>
</through>
</names>
</name1>
</root>然后,我将该文件转换为平面XML数据,如下所示-
<names id="5" from="Germany" to="France">
<through id="9" routeNo="5" route="Vienna" />
<through id="10" routeNo="5" route="russia" />
</names> 我已经将这个XML文件导入到SQLite数据库中。我使用了以下代码来导入-
SQLiteConnection sqlite_conn = new SQLiteConnection("Data Source=SGLight_empty.fmeda;Version=3;New=True;Compress=True;");
NDbUnit.Core.INDbUnitTest sqliteDatabase = new NDbUnit.Core.SqlLite.SqlLiteUnitTest(sqlite_conn);
string xsdFilename = "myXSD.xsd";
string xmlFilename = "myXML.xml";
sqliteDatabase.ReadXmlSchema(xsdFilename);
sqliteDatabase.ReadXml(xmlFilename);
sqliteDatabase.PerformDbOperation(NDbUnit.Core.DbOperationFlag.CleanInsertIdentity);现在,问题是它适用于普通的XML文件,即我不能导入从普通的XML转换而来的平面XML文件。有没有人可以帮我修改一下,这样我也可以从平面XML导入数据?
发布于 2014-04-15 22:07:17
需要考虑的一个问题是,即使对平面化的SQLite使用了正确的XSD,它是否能够识别该XML并将其与生成完整XML的数据库模式相匹配。为什么首先需要扁平化XML?
也就是说,Windows SDK附带的xsd工具可以从任意XML文件推断出XSD。我将您的“平面”xml复制到一个名为XSD的文件中,运行xsd temp.xml,并收到以下temp.xml定义:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="names">
<xs:complexType>
<xs:sequence>
<xs:element name="through" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="routeNo" type="xs:string" />
<xs:attribute name="route" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="id" type="xs:string" />
<xs:attribute name="from" type="xs:string" />
<xs:attribute name="to" type="xs:string" />
</xs:complexType>
</xs:element>
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="names" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>https://stackoverflow.com/questions/23061694
复制相似问题