Logo UGIdotNET

Discussione 'Merge di due dataset'

# Pubblicato il 07 ago 2002 10.10 - Rispondi
Carlo Folini
Merge di due dataset
Ciao,
non riesco a effettuare il merge di due dataset con una struttura predefinita da un XSD.

Il codice che uso è:
----------------------------------------
DataSet DataTransfer = new DataSet("DataTransfer");
DataSet ClientList = new DataSet("ClientList");
ClientList.ReadXml(@"D:\MyPath\ClientData.xml");

DataTransfer.ReadXmlSchema(@"D:\MyPath\Simple2.xsd");
DataTransfer.Merge(ClientList);

Result.Text = DataTransfer.GetXml();
----------------------------------------

Quando faccio una getXml sul dataSet che voglio inserire (ClientList ) ottengo :
<ClientList>
<Client>
..............
</Client>
</ClientList>

Per cui quando lo inserirsco nel dataset di destinazione in cui ho già caricato l'xsd di definizione. Questo lo ho ottenuto con una autogenerazione da VS.NEt e dovrebbe contenere la relazione gerarchica DataTransfer->ClientList->Client.
Quello che invece ottengo è che il tag CLientList sparisce:

<DataTransfer>
<Client>
..............
</Client>
</DataTransfer>

Come posso fare per ottenere la rappresentazione seguente:
<?xml version="1.0"?>
<DataTransfer xmlns="http://tempuri.org/Simple.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="Simple.xsd">
<ClientList>
<Client>
<CDG>000123456</CDG>
<BankCode>1</BankCode>
<Branch>2</Branch>
<CashAccountNumber>123</CashAccountNumber>
<NameAndFirstName>Rossi
Poalo</NameAndFirstName>
<CashAccountOpenDate>1997-09-
19</CashAccountOpenDate>
</Client>
<Client>
<CDG>234567890</CDG>
<BankCode>2</BankCode>
<Branch>10</Branch>
<CashAccountNumber>987</CashAccountNumber>
<NameAndFirstName>Tardelli
Marco</NameAndFirstName>
<CashAccountOpenDate>1998-11-
11</CashAccountOpenDate>
</Client>
</ClientList>
</DataTransfer>

ClientData.xml
-----------------------------------------------------
<ClientList>
<Client>
<CDG>000123456</CDG>
<BankCode>1</BankCode>
<Branch>2</Branch>
<CashAccountNumber>123</CashAccountNumber>
<NameAndFirstName>Rossi Poalo</NameAndFirstName>
<CashAccountOpenDate>1997-09-19</CashAccountOpenDate>
</Client>
<Client>
<CDG>234567890</CDG>
<BankCode>2</BankCode>
<Branch>10</Branch>
<CashAccountNumber>987</CashAccountNumber>
<NameAndFirstName>Tardelli Marco</NameAndFirstName>
<CashAccountOpenDate>1998-11-11</CashAccountOpenDate>
</Client>
</ClientList>
-----------------------------------------------------

simple2.xsd
----------------------------------------------------
<?xml version="1.0" ?>
<xs:schema id="DataTransfer"
targetNamespace="http://tempuri.org/Simple.xsd"
xmlns:mstns="http://tempuri.org/Simple.xsd"
xmlns="http://tempuri.org/Simple.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
attributeFormDefault="qualified"
elementFormDefault="qualified">
<xs:element name="DataTransfer" msdata:IsDataSet="true"
msdata:Locale="it-IT" msdata:EnforceConstraints="False">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="ClientList">
<xs:complexType>
<xs:sequence>
<xs:element name="Client" minOccurs="0"
maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="CDG" type="xs:string" minOccurs="0" />
<xs:element name="BankCode" type="xs:string"
minOccurs="0" />
<xs:element name="Branch" type="xs:string" minOccurs="0" />
<xs:element name="CashAccountNumber" type="xs:string"
minOccurs="0" />
<xs:element name="NameAndFirstName" type="xs:string"
minOccurs="0" />
<xs:element name="CashAccountOpenDate" type="xs:string"
minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
-------------------------------------------
# Pubblicato il 08 ago 2002 12.38 - Rispondi
Giuseppe Guerrasio
Re: Merge di due dataset
Non riesco a capire il perchè del merge, ma per far caricare il ClientList come tabella sul DataSet ClientList devi aggiugere un tag qualsiasi all'inizio del file ClientData. In questo modo il DataSet lo Aggiunge come tabella . Il Tag root non viene mai considerato come tabella.

FileModificato
ClientData.xml
-----------------------------------------------------
<l>
<ClientList>
<Client>
<CDG>000123456</CDG>
<BankCode>1</BankCode>
<Branch>2</Branch>
<CashAccountNumber>123</CashAccountNumber>
<NameAndFirstName>Rossi Poalo</NameAndFirstName>
<CashAccountOpenDate>1997-09-19</CashAccountOpenDate>
</Client>
<Client>
<CDG>234567890</CDG>
<BankCode>2</BankCode>
<Branch>10</Branch>
<CashAccountNumber>987</CashAccountNumber>
<NameAndFirstName>Tardelli Marco</NameAndFirstName>
<CashAccountOpenDate>1998-11-11</CashAccountOpenDate>
</Client>
</ClientList>
</l>
-----------------------------------------------------


© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185