我正在尝试将一个XML文件读入一个已经存在的数据库表中。问题是XML标签和数据库列虽然拥有相同的数据类型,但它们的名称不同。因此,我想要将XML标签“翻译”成数据库列,以便能够输入到数据库中。
然而,我不确定如何做到这一点。
以下是我迄今为止所做的事情:
static void writeToDatabase()
{
XmlDocument doc= new XmlDocument();
try {
// Reading the xml
doc.Load("C:\\Temp\navetout.xml");
DataTable dt = new DataTable();
// Code here to read the xml into an already existing database table?
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
数据库位于另一台服务器上,我已在app.config
文件中包含了此信息。
<connectionStrings>
<add name="CS"
connectionString="Data Source=tsrv2062;Initial Catalog=BUMS;Integrated Security=True"/>
</connectionStrings>
假设XML文件中有标签"Name",而数据库表列中有列"Firstname"。
XML示例:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfFolkbokforingspostTYPE xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FolkbokforingspostTYPE>
<Sekretessmarkering xsi:nil="true" />
<Personpost>
<PersonId>
<PersonNr>7527245452542</PersonNr>
</PersonId>
<HanvisningsPersonNr xsi:nil="true" />
<Namn>
<Tilltalsnamnsmarkering>20</Tilltalsnamnsmarkering>
<Fornamn>skjdgnsdng</Fornamn>
<Mellannamn xsi:nil="true" />
<Efternamn>sdsdgsdgs</Efternamn>
<Aviseringsnamn xsi:nil="true" />
</Namn>
<Folkbokforing>
<Folkbokforingsdatum>20060512</Folkbokforingsdatum>
<LanKod>56</LanKod>
<KommunKod>77</KommunKod>
<ForsamlingKod xsi:nil="true" />
<Fastighetsbeteckning>PÅLNGE 6:38</Fastighetsbeteckning>
<FiktivtNr>0</FiktivtNr>
</Folkbokforing>
<Adresser>
<Folkbokforingsadress>
<CareOf xsi:nil="true" />
<Utdelningsadress1 xsi:nil="true" />
<Utdelningsadress2>sgdsdgsdgs</Utdelningsadress2>
<PostNr>78965</PostNr>
<Postort>PÅLÄNG</Postort>
</Folkbokforingsadress>
<Riksnycklar>
<FastighetsId>46464545</FastighetsId>
<AdressplatsId>764846846</AdressplatsId>
<LagenhetsId>45465654645</LagenhetsId>
</Riksnycklar>
</Adresser>
<Fodelse>
<HemortSverige>
<FodelselanKod>00</FodelselanKod>
<Fodelseforsamling>NEDERKALIX</Fodelseforsamling>
</HemortSverige>
</Fodelse>
<Medborgarskap>
<MedborgarskapslandKod>SE</MedborgarskapslandKod>
<Medborgarskapsdatum>0</Medborgarskapsdatum>
</Medborgarskap>
</Personpost>
</FolkbokforingspostTYPE>
</ArrayOfFolkbokforingspostTYPE>
以下是数据库表的列:
PersonalIdentityNumber
ProtectedIdentity
ReferedCivicRegistrationNumber
UnregistrationReason
UnregistrationDate
MessageComputerComputer
GivenNameNumber
FirstName
MiddleName
LastName
NotifyName
NationalRegistrationDate
NationalRegistrationCountyCode
NationalRegistrationMunicipalityCode
NationalRegistrationCoAddress
NationalRegistrationDistributionAddress1
NationalRegistrationDistributionAddress2
NationalRegistrationPostCode
NationalRegistrationCity
NationalRegistrationNotifyDistributionAddress
NationalRegistrationNotifyPostCode
NationalRegistrationNotifyCity
ForeignDistrubtionAddress1
ForeignDistrubtionAddress2
ForeignDistrubtionAddress3
ForeignDistrubtionCountry
ForeignDate
BirthCountyCode
BirthParish
ForeignBirthCity
CitizenshipCode
CitizenshipDate
Email
Telephone
Mobiletelephone
Gender
NotNewsPaper
Note
StatusCode
NationalRegistrationCode
RegistrationDate
LastUpdatedFromNavet
TemporaryDistrubtionAddress1
TemporaryDistrubtionAddress2
TemporaryDistrubtionAddress3
TemporaryDistrubtionCountry
Password
VisibilityLevel
LastChangedBy
LastChangedDate
SeamanIdentity
Category
这里举个例子,<PersonNr>
标签和数据库列 PersonalIdentityNumber
是相同的。
与XML标签不匹配的列应该返回 null
。
在将XML数据读入数据库表之前,我认为需要将XML标签翻译为数据库表列。 在这种情况下,是"Firstname"。
有人能帮我进行这种"翻译"并将其读入数据库表吗?
var xd=new XmlDocument()
,然后使用Load()
方法。你可以阅读这个。有几种方法可以做到这一点。 - Shnugo