PDA

Ver la Versión Completa : Importación desde fichero XML????


burasu
11-10-2005, 10:56:29
Bueno ciertamente no se si esta consulta la tendría que hacer en este foro o en otro diferente, pero como la aplicación que quiero desarrollar es en C# pues por eso la pongo aquí :D .

Vereis tengo una aplicación para pc catalogadora de peliculas de las muchas que te puedes bajar desde Internet que exporta la estructura de su base de datos en formato XML, entonces quiero desarrollar una aplicación para mi pocket pc en la que tenga una versión reducida de esa aplicación.

Nunca he trabajado con XML entonces querría saber como debo tratar un proceso de importación de este tipo de ficheros. ¿existen funciones especiales, o directamente tengo que ir moviendome haciendo comparaciones de cadena localizando las diferentes etiquetas que me interesan?

Gracias de antemano.

__hector
11-10-2005, 19:31:45
Si el xml esta bien estructurado, digo, si tiene una estructura tal que, pueda ser leido como una coleccion de tablas, o si puedes hacer que se parezca a tal cosa, puedes facilmente utilizar un dataset y cargar los datos, y aplicar cualquier tipo de operacion sobre ellos, como filtros de tablas, adiciones y eliminaciones de registros, en fin, todo lo que haces en una tabla usualmente, con solo un par de metodos.

Ahora bien, no me queda claro como haras el paso de esos datos desde la maquina al pocket, porque para eso existen tecnologias que evidentemente no son las que estas utilizando.

Esperamos tus noticias,

burasu
14-10-2005, 22:51:20
La estructura de datos es tal que así

<Collection>
<DVD>
<ID>007038050122.10</ID>
<UPC>007038-050122</UPC>
<ProfileTimestamp>2001-07-27 07:42:10</ProfileTimestamp>
<Title>Armageddon</Title>
<SortTitle>Armageddon</SortTitle>
<Regions>
<Region>2</Region>
</Regions>
<Discs>
</Discs>
<CollectionType>Owned</CollectionType>
<CollectionNumber>229</CollectionNumber>
<Locks>
<Entire>False</Entire>
<Covers>False</Covers>
<Title>False</Title>
<Cast>False</Cast>
<Crew>False</Crew>
<DiscInformation>False</DiscInformation>
<Overview>False</Overview>
<Regions>False</Regions>
<AudioSubtitles>False</AudioSubtitles>
<Genres>False</Genres>
<SRP>True</SRP>
<Studios>False</Studios>
</Locks>
<Rating>13</Rating>
<ProductionYear>1998</ProductionYear>
<RunningTime>144</RunningTime>
<CaseType>Keep Case</CaseType>
<Genres>
<Genre>Science-Fiction</Genre>
<Genre>Action</Genre>
</Genres>
<Format>
<FormatAspectRatio>2.35</FormatAspectRatio>
<FormatVideoStandard>PAL</FormatVideoStandard>
<FormatLetterBox>True</FormatLetterBox>
<FormatPanAndScan>False</FormatPanAndScan>
<FormatFullFrame>False</FormatFullFrame>
<Format16X9>True</Format16X9>
<FormatDualSided>True</FormatDualSided>
<FormatDualLayered>False</FormatDualLayered>
<FormatFlipper>False</FormatFlipper>
</Format>
<Features>
<FeatureSceneAccess>True</FeatureSceneAccess>
<FeatureCommentary>False</FeatureCommentary>
<FeatureTrailer>False</FeatureTrailer>
<FeaturePhotoGallery>False</FeaturePhotoGallery>
<FeatureDeletedScenes>False</FeatureDeletedScenes>
</Features>
<Studios>
<Studio>Touchstone Pictures</Studio>
<Studio>Jerry Bruckheimer Films</Studio>
</Studios>
<Audio>
<AudioFormat>
<AudioLanguage>English</AudioLanguage>
<AudioCompression>DD (Dolby Digital)</AudioCompression>
<AudioChannels>5.1 Surround</AudioChannels>
</AudioFormat>
<AudioFormat>
<AudioLanguage>Spanish</AudioLanguage>
<AudioCompression>DD (Dolby Digital)</AudioCompression>
<AudioChannels>5.1 Surround</AudioChannels>
</AudioFormat>
<AudioFormat>
<AudioLanguage>German</AudioLanguage>
<AudioCompression>DD (Dolby Digital)</AudioCompression>
<AudioChannels>5.1 Surround</AudioChannels>
</AudioFormat>
<AudioFormat>
<AudioLanguage>Italian</AudioLanguage>
<AudioCompression>DD (Dolby Digital)</AudioCompression>
<AudioChannels>5.1 Surround</AudioChannels>
</AudioFormat>
</Audio>
<Subtitles>
<Subtitle>English</Subtitle>
<Subtitle>Other</Subtitle>
</Subtitles>
<Actors>
<Actor>
<FirstName>Bruce</FirstName>
<LastName>Willis</LastName>
</Actor>
<Actor>
<FirstName>Billy</FirstName>
<MiddleName>Bob</MiddleName>
<LastName>Thornton</LastName>
</Actor>
<Actor>
<FirstName>Ben</FirstName>
<LastName>Affleck</LastName>
</Actor>
</Actors>
<Credits>
<Credit>
<FirstName>Michael</FirstName>
<LastName>Bay</LastName>
<CreditType>Direction</CreditType>
<CreditSubtype>Director</CreditSubtype>
</Credit>
</Credits>
<Review>
<ReviewFilm>0</ReviewFilm>
<ReviewVideo>0</ReviewVideo>
<ReviewAudio>0</ReviewAudio>
<ReviewExtras>0</ReviewExtras>
</Review>
<SRPInfo>
<SRP>$0.00</SRP>
<SRPCurrencyID>USD</SRPCurrencyID>
<SRPCurrencyName>United States (Dollar)</SRPCurrencyName>
</SRPInfo>
<PurchaseInfo>
<PurchasePriceInfo>
<PurchasePriceCurrencyID>EUR</PurchasePriceCurrencyID>
<PurchasePriceCurrencyName>Europe (Euro)</PurchasePriceCurrencyName>
</PurchasePriceInfo>
<PurchaseDate>2005-03-10</PurchaseDate>
</PurchaseInfo>
<Events>
</Events>
<LoanInfo>
</LoanInfo>
<Tags>
</Tags>
<Overview>Los creadores del gran éxito &quot;La Roca&quot; vuelven a conseguir
realizar una de las mejores películas de acción del año.

Su explosivo reparto, encabezado por Bruce Willis (&quot;Jungla de cristal&quot;), junto
a los ganadores del Oscar® al Mejor Guión Original en 1997 por &quot;El indomable Will Hunting&quot;,
Ben Affleck, y al Mejor Guión Adaptado en 1996 por &quot;Sling Blade&quot;,
Billy Bob Thornton (&quot;El otro lado de la vida&quot;), Liv Tyler (&quot;El secreto de los Abbott&quot;),
Steve Buscemi (&quot;Con Air&quot;) y Will Patton (&quot;El secreto de los
Abbott&quot;), que te dejará pegado al asiento y hará que olvides respirar.

Cuando un asteroide del tamaño de Tejas se dirige a la Tierra a toda velocidad, la única
esperanza del mundo está depositada en un grupo de trabajadores expertos en perforaciones petrolíferas,
cuya misión consistirá en
desintegrar el asteroide antes de que destruya nuestro mundo. En este
heróico viaje, tendrán que superar las más duras condiciones físicas y emocionales a las que jamás se
haya enfrentado un ser humano. Objetivo: salvar el planeta y evitar el ARMAGEDDON.</Overview>
<LastEdited>2005-03-10</LastEdited>
</DVD>
<DVD>Nueva pelicula</DVD>


Y en aquellas etiquetas que se duplican, como son el caso de la etiqueta actors o regiones me da error, como puedo recibir dicha información correctamente??

En teoría el código es correcto puesto que la aplicación original lo utiliza para realizar backups de la base de datos.

Gracias de antemano.

__hector
16-10-2005, 05:47:56
Lamentablemente, no podras utilizar el Dataset para manejar los datos, o al menos no con la estructura de datos original. Lo que si puedes hacer, de forma simple, es lo siguiente:

- Diseña conceptualmente las tablas que conforman cada registro (ese maestro/detalle de dvd con varios actores, y las otras tablas de detalle)

- Crea, a partir de dataadapters, un dataset con el esquema de esas tablas, que en lo posterior almacenaran los registros de esas entidades.

- Una vez tienes la estructura en el dataset (con relaciones y constraints si quieres), utiliza un objeto del tipo xmlreader para llenar los datos de esas tablas, recorriendo el arbol del documento xml. Claro esta, el XmlReader no es tan simple como ir recorriendo nodo a nodo, sino que es una clase mucho mas potente que te facilitara el trabajo.

Ya llenado el dataset, puedes guardarlo como un documento xml (usando el metodo WriteXml), con la ventaja de que el mismo esta estructurado para trabajar con las inserciones, actualizaciones y borrados desde .NET tal cual fuese una tabla.

Claro esta, que puedes saltarte todo este rollo e implementar tu propio rejuego de lecturas e inserciones usando el documento fuente y el xmlreader, pero yo lo veo mas comodo si usas el DataSet (sobre todo tomando en cuenta que el xmlreader funciona como un cursor forward-only)

burasu
16-10-2005, 12:04:07
ok pues muchas gracias por el consejo hector