Universidad de Costa Rica
|
|
XML es estándard
internacional para el intercambio de datos entre aplicaciones. Los
documentos XML contienen etiquetas que abren y cierran un bloque
de datos, con la ventaja de que también pueden estar
anidadas. La etiquetas se encierran entre paréntesis
angulares, y la etiqueta que cierra un bloque de datos tiene el
mismo nombre que la que lo abre, con la diferencia de incluye el
caracter "/
".
Su trabajo consiste en hacer un programa que lea un archivo XML y le extraiga los datos para luego almacenarlos en una tabla de una base de datos relacional. Use la gramática XML que le fue entregada en clase para escribir el programa C++.
<list> <entity ID_ENT="1110111"> <record REL_ID="0000" REL_SUB="0000" REL_TYPE="e" ATTRIB="1110111" VAL=""> <attrib REL_TYPE="s" ATTRIB="2220000" VAL="7700002" /> <attrib REL_TYPE="i" ATTRIB="0001234" VAL="2" /> <attrib REL_TYPE="a" ATTRIB="1110111" VAL="1110123" /> <record REL_ID="0101" REL_SUB="0000" REL_TYPE="e" ATTRIB="2220021" VAL=""> <attrib REL_TYPE="s" ATTRIB="5000002" VAL="7700021" /> <attrib REL_TYPE="i" ATTRIB="2220011" VAL="88887753" /> <attrib REL_TYPE="s" ATTRIB="5000005" VAL="7700022" /> <record REL_ID="0201" REL_SUB="0101" REL_TYPE="e" ATTRIB="2220022" VAL=""> <attrib REL_TYPE="d" ATTRIB="5000003" VAL="20080923" /> <attrib REL_TYPE="f" ATTRIB="5000004" VAL="250.55" /> </record> <record REL_ID="0202" REL_SUB="0101" REL_TYPE="e" ATTRIB="2220022" VAL=""> <attrib REL_TYPE="d" ATTRIB="5000003" VAL="20081025" /> <attrib REL_TYPE="f" ATTRIB="2220024" VAL="386.12" /> <attrib REL_TYPE="f" ATTRIB="5000004" VAL="256.55" /> </record> <record REL_ID="0203" REL_SUB="0101" REL_TYPE="e" ATTRIB="2220022" VAL=""> <attrib REL_TYPE="d" ATTRIB="5000003" VAL="20081112" /> <attrib REL_TYPE="f" ATTRIB="5000004" VAL="260.33" /> </record> <record REL_ID="0301" REL_SUB="0101" REL_TYPE="e" ATTRIB="2220023" VAL=""> <attrib REL_TYPE="d" ATTRIB="5000003" VAL="20051231" /> <attrib REL_TYPE="e" ATTRIB="2220023" VAL="" /> <attrib REL_TYPE="d" ATTRIB="5000003" VAL="20061101" /> </record> </record> <record REL_ID="0102" REL_SUB="0000" REL_TYPE="e" ATTRIB="2220021" VAL=""> <attrib REL_TYPE="s" ATTRIB="5000002" VAL="7700024" /> <attrib REL_TYPE="i" ATTRIB="2220011" VAL="77538888" /> <attrib REL_TYPE="s" ATTRIB="5000005" VAL="7700025" /> <record REL_ID="0205" REL_SUB="0102" REL_TYPE="e" ATTRIB="2220022" VAL=""> <attrib REL_TYPE="d" ATTRIB="5000003" VAL="20090615" /> <attrib REL_TYPE="f" ATTRIB="5000004" VAL="325.15" /> </record> <record REL_ID="0301" REL_SUB="0000" REL_TYPE="e" ATTRIB="2220023" VAL=""> <attrib REL_TYPE="d" ATTRIB="5000003" VAL="20051231" /> </record> <record REL_ID="0302" REL_SUB="0000" REL_TYPE="e" ATTRIB="2220023" VAL=""> <attrib REL_TYPE="d" ATTRIB="5000003" VAL="20061101" /> </record> </record> </record> </entity> <entity ID_ENT="2220222"> <record REL_ID="0000" REL_SUB="0000" REL_TYPE="e" ATTRIB="0001111" VAL=""> <attrib REL_TYPE="s" ATTRIB="2220000" VAL="7700001" /> <record REL_ID="0101" REL_SUB="0000" REL_TYPE="e" ATTRIB="2220023" VAL=""> <attrib REL_TYPE="s" ATTRIB="5000002" VAL="7700024" /> <attrib REL_TYPE="i" ATTRIB="2220011" VAL="77538888" /> <attrib REL_TYPE="s" ATTRIB="5000005" VAL="7700025" /> </record> <record REL_ID="0201" REL_SUB="0000" REL_TYPE="e" ATTRIB="2220024" VAL=""> <attrib REL_TYPE="d" ATTRIB="5000003" VAL="20051302" /> </record> </record> </entity> </list> |
Incluir en el documento XML los valores para
"[REL_ID]
" y "[REL_SUB]
" es innecesario,
pues la estructura jerárquica del documento XML indica
claramente la dependencia entre
sub-registros, por lo que esos campos pueden omitirse.
También puede omitirse el indicador
REL_TYPE="e"
para cada descriptor de sub-registro
junto con el valor nulo VAL=""
. Por eso no es ambiguo
re-escribir algunos de los renglones del documento XML como se
muestra en la siguiente figura.
<entity ID_ENT="2220222"> <record ATTRIB="1110111"> <attrib REL_TYPE="s" ATTRIB="2220000" VAL="7700001" /> <record ATTRIB="2220023"> <attrib REL_TYPE="s" ATTRIB="5000002" VAL="7700024" /> <attrib REL_TYPE="i" ATTRIB="2220011" VAL="77538888" /> <attrib REL_TYPE="s" ATTRIB="5000005" VAL="7700025" /> </record> <record REL_TYPE="e" ATTRIB="2220024" VAL=""> <attrib ATTRIB="5000003" VAL="20051302" /> </record> </record> </entity> |
Si su programa recibe este documento XML de arriba,
producirá una tabla de para la relación
"ERAV
" vista en clase, cuyos valores están el
la hoja de cáculo "ERAV.xls
". Asegúrese
de que su programa es capaz de reconocer cualquier documento XML,
aunque los únicos que transforme a formato tabular son los
que tienen una estructura similar a la del documento de este
ejemplo.
Entregue su tarea por correo electrónico, como lo hizo anteriormente.
|
Adolfo Di Mare <adolfo@di-mare.com>.
|