FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
XML, Nodos, subnodos, y más subnodos...¿Cómo leerlos? Me sale en blanco....
Hola;
Llevo un par de días aprendiendo sobre ficheros .xml (después de estudiar previamente html y xhtml) y he conseguido hacer algún ejemplo y leer fichero .xml creado por mi a mono con el notepad. Pero……todo esto era para leer un .xml que recibo de una llamada por http. Pues el fichero que recibo como respuesta no doy con la forma de extraer los datos que me interesan. Tengo que decir que buscando info encontré en más de un sitio la el mismo tutorial de como meter un xml en un ClientDataSet y a mi no me funciona. En los ejemplos veo que insertan un ClientDataSet, DataSource y un DBGrid y ¡a volar! Pero a mi me pide algo así como provider….en fin. Volviendo al tema principal de mi problema: El .xml que obtengo después de la llamada por http, lo guardo con codificación UTF-8. Y se guarda correctamente, lo abro con IE, Firefox….todo bien. Pero desde Delphi, no me sale nada. No da error, pero el dato en blanco. Pego aquí un xml de respuesta al completo. Se trata de un único registro, pues es la ficha de un ISBN (de un libro): Código:
<?xml version="1.0" encoding="UTF-8" ?> <getRecordsXResponse xmlns="http://www.dilve.es/dilve/api/xsd/getRecordsXResponse" version="1.2"> <ONIXMessage xmlns="http://www.editeur.org/onix/2.1/reference" > <Header> <FromCompany>DILVE</FromCompany> <SentDate>20120621</SentDate> </Header> <Product> <RecordReference>9788431539474</RecordReference> <NotificationType>03</NotificationType> <ProductIdentifier> <ProductIDType>03</ProductIDType> <IDValue>9788431539474</IDValue> </ProductIdentifier> <ProductForm>BC</ProductForm> <ProductFormDescription></ProductFormDescription> <Series> <Title> <TitleType>01</TitleType> <TitleText>Desarrollo profesional</TitleText> </Title> <NumberWithinSeries>Profesional</NumberWithinSeries> </Series> <Title> <TitleType>01</TitleType> <TitleText>Curso rápido para desarrollar la memoria</TitleText> </Title> <Title> <TitleType>10</TitleType> <TitleText>Curso rápido para desarrollar la memoria</TitleText> </Title> <Contributor> <ContributorRole>A01</ContributorRole> <PersonNameInverted>Tresoldi, Roberto</PersonNameInverted> </Contributor> <Language> <LanguageRole>01</LanguageRole> <LanguageCode>spa</LanguageCode> </Language> <NumberOfPages>128</NumberOfPages> <MainSubject> <MainSubjectSchemeIdentifier>12</MainSubjectSchemeIdentifier> <SubjectSchemeVersion>2.1</SubjectSchemeVersion> <SubjectCode>VS</SubjectCode> <SubjectHeadingText>AUTOAYUDA Y DESARROLLO PERSONAL</SubjectHeadingText> </MainSubject> <Subject> <SubjectSchemeIdentifier>12</SubjectSchemeIdentifier> <SubjectSchemeVersion>2.1</SubjectSchemeVersion> <SubjectCode>VS</SubjectCode> <SubjectHeadingText>AUTOAYUDA Y DESARROLLO PERSONAL</SubjectHeadingText> </Subject> <Subject> <SubjectSchemeIdentifier>51</SubjectSchemeIdentifier> <SubjectCode>159.9</SubjectCode> <SubjectHeadingText>Psicología.</SubjectHeadingText> </Subject> <AudienceCode>01</AudienceCode> <OtherText> <TextTypeCode>01</TextTypeCode> <TextFormat>06</TextFormat> <Text language="spa">Vivimos en una época en la que estamos sometidos a un continuo bombardeo mediático e informático que ha revolucionado el concepto......</Text> </OtherText> <OtherText> <TextTypeCode>01</TextTypeCode> <TextFormat>06</TextFormat> <Text language="spa">Roberto Tresoldi, licenciado en Letras por la Universidad Católica de Milán, ha trabajado en el sector de la información, las relaciones públicas, la publicidad, la organización de congresos y la formación para algunas grandes empresas internacionales. Políglota (conoce más de diez lenguas modernas y varias lenguas antiguas), es autor de obras y artículos sobre la historia de la cultura, ha estudiado el tema de la memoria experimentando diversas técnicas de memorización en empresas, cursos, brainstormings y conferencias.</Text> </OtherText> <MediaFile> <MediaFileTypeCode>04</MediaFileTypeCode> <MediaFileLinkTypeCode>01</MediaFileLinkTypeCode> <MediaFileLink>http://www.edhasa.com.ar/temp/1000/9788431539474.jpg</MediaFileLink> </MediaFile> <Publisher> <NameCodeType>02</NameCodeType> <NameCodeTypeName>DILVE_PUBLID</NameCodeTypeName> <NameCodeValue>DLV00011981</NameCodeValue> <PublisherName>DE VECCHI EDICIONES, S.A.</PublisherName> </Publisher> <CityOfPublication>Barcelona</CityOfPublication> <CountryOfPublication>ES</CountryOfPublication> <PublishingStatus>04</PublishingStatus> <PublicationDate>20080930</PublicationDate> <Measure> <MeasureTypeCode>01</MeasureTypeCode> <Measurement>205</Measurement> <MeasureUnitCode>mm</MeasureUnitCode> </Measure> <Measure> <MeasureTypeCode>02</MeasureTypeCode> <Measurement>145</Measurement> <MeasureUnitCode>mm</MeasureUnitCode> </Measure> <SupplyDetail> <SupplierName>DE VECCHI EDICIONES, S.A.</SupplierName> <SupplierRole>01</SupplierRole> <SupplyToCountry>ES</SupplyToCountry> <ProductAvailability>20</ProductAvailability> <Price> <PriceTypeCode>04</PriceTypeCode> <PriceAmount>15.90</PriceAmount> <CurrencyCode>EUR</CurrencyCode> <TaxRateCode1>R</TaxRateCode1> <TaxRatePercent1>4.0</TaxRatePercent1> <TaxableAmount1>15.2885</TaxableAmount1> </Price> </SupplyDetail> </Product> </ONIXMessage> </getRecordsXResponse> Un saludo, y gracias... Miguel |
#2
|
||||
|
||||
Sigo aprendiendo lo que es XML. Me he comprado el libro de Miguel Ángel Acera García. También busco info en internet para lo que es el trabajarlo en Delphi. Pero sigo sin saber como hacer algo tan sencillo como buscar un campo y su tipo.
En el archivo .xml que obtengo y copié en mi anterior mensaje, la raiz de lo que es el libro es <Product> y ya dentro están los demás datos. Pero por ejemplo, el dato Título puede repetirse, pero dentro de ese nodo Título (<Title>) existen dos o más nodos, uno es <TitleType>. En mi caso quiero extraer el del dipo 01 (Es el que me interesa, porque tengo la tabla de códigos). Código:
-<Title> <TitleType>01</TitleType> <TitleText>Curso rápido para desarrollar la memoria</TitleText> </Title> -<Title> <TitleType>10</TitleType> <TitleText>Curso rápido para desarrollar la memoria</TitleText> </Title> Un saludo :-) |
#3
|
||||
|
||||
He conseguido abrir el archivo .xml en un TClientDataSet, convirtiéndolo primero con XML Mapping Tool. Pero a parte de que esto es algo que debería hacer por código, así no me vale, además es que no lo ha leído bien algunos campos, la mayoría está bien, pero Título del libro sólo me saca uno y además dentro de otro Dataset.
Al final creo que haré yo la búsqueda manual en el fichero... Un saludo :-) |
#4
|
||||
|
||||
Hola, te iba a pasar un link, pero el foro no me deja poner enlaces...
Prueba a buscar: "delphi xml db files" en google y mira la segunda página: "Database Table to XML and Back - Using Delphi" Espero que te sirva... Saludos. |
#5
|
||||
|
||||
Gracias chamix :-)
No puedo probar eso ahora, pero lo haré, me interesa mucho. El caso es que como sólo necesito extraer un registro, al final lo he solucionado de otra forma más conveniente. Y he abierto un hilo nuevo con la solución y otro título más adecuado para quien necesite ayuda en un caso similar. El hilo es este: http://clubdelphi.com/foros/showthre...192#post436192 Tal vez los administradores crean adecuado borrar este hilo… ¡Un saludo! |
#6
|
||||
|
||||
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código Únete al grupo Teaming clubdelphi | Colabora mediante Paypal |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Consulta que sale en blanco. | aanil | SQL | 4 | 30-04-2010 22:27:49 |
VirtualTreeview asignar PopupMenu a nodos y subnodos | JXJ | Varios | 0 | 02-10-2007 19:05:51 |
porque al imprimir con fast report 2.54, me sale una pagina en blanco ? | JuanErasmo | Impresión | 1 | 16-08-2007 19:25:24 |
Sale la hoja en blanco en impresora HP cuando instalo mi aplicacion... | JuanErasmo | Impresión | 0 | 25-09-2006 17:03:42 |
Reporte imprime no imprime sale en Blanco | Alexander | Impresión | 0 | 22-08-2005 16:09:47 |
|