Adaptación al uso de Jackson con ToXmlGenerator

This commit is contained in:
Isidoro Nevares Martín 2025-10-31 12:53:43 +01:00
commit 506cd58543
13 changed files with 1258 additions and 0 deletions

21
.classpath Normal file
View File

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER">
<attributes>
<attribute name="module" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry including="**/*.java" kind="src" output="target/classes" path="src">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
/bin/
*.class

23
.project Normal file
View File

@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>aadd_act1_13</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>

View File

@ -0,0 +1,14 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=24
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=24
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
org.eclipse.jdt.core.compiler.release=enabled
org.eclipse.jdt.core.compiler.source=24

View File

@ -0,0 +1,4 @@
activeProfiles=
eclipse.preferences.version=1
resolveWorkspaceProjects=true
version=1

499
informacion-IES_v2.json Normal file
View File

@ -0,0 +1,499 @@
{
"tipo": "FP",
"nombre": "IES Virgen de la Paloma",
"modulo": [
{
"id": "M001",
"ubicacion": "Aula 101",
"tipo": "Laboratorio",
"descripcion": "Laboratorio de informática",
"capacidad": "30"
},
{
"id": "M002",
"ubicacion": "Aula 102",
"tipo": "Taller",
"descripcion": "Taller de Fundamentos de Hardware",
"capacidad": "25"
},
{
"id": "M003",
"ubicacion": "Aula 102",
"tipo": "Taller",
"descripcion": "Taller de Automoción",
"capacidad": "25"
}
],
"ciclo": [
{
"codigo": "IFC05",
"nivel": "CFGS",
"familia": "IFC",
"numero_horas": "2000",
"nombre": {
"nombre_corto": "DAM",
"nombre_largo": "Técnico Superior en Desarrollo de Aplicaciones Multiplataforma"
},
"curso": [
{
"numero": "1",
"modulo": [
{
"id": "11",
"ref": "0186",
"titulo": "Bases de datos",
"numerohoras": "205"
},
{
"id": "12",
"ref": "0188",
"numerohoras": "90",
"titulo": "Entornos de desarrollo"
},
{
"id": "13",
"ref": "0194",
"numerohoras": "90",
"titulo": "Formación y orientación laboral"
},
{
"id": "14",
"ref": "0190",
"numerohoras": "140",
"titulo": "Lenguaje de marcas y sistemas de gestión de información"
},
{
"id": "14",
"ref": "0189",
"numerohoras": "270",
"titulo": "Programación"
},
{
"id": "15",
"ref": "0191",
"numerohoras": "205",
"titulo": "Sistemas informáticos"
}
]
},
{
"numero": "2",
"modulo": [
{
"id": "21",
"ref": "0286",
"titulo": "Acceso a Datos",
"numerohoras": "120"
},
{
"id": "22",
"ref": "0288",
"numerohoras": "120",
"titulo": "Diseño de interfaces"
},
{
"id": "23",
"ref": "0294",
"numerohoras": "65",
"titulo": "Empresa e iniciativa emprendedora"
},
{
"id": "24",
"ref": "0290",
"numerohoras": "80",
"titulo": "Programación de servicios y procesos"
},
{
"id": "25",
"ref": "0289",
"numerohoras": "80",
"titulo": "Programación multimedia y dispositivos móviles"
},
{
"id": "26",
"ref": "0291",
"numerohoras": "40",
"titulo": "Inglés técnico para grado superior"
}
]
}
]
},
{
"codigo": "IFC06",
"nivel": "CFGS",
"familia": "IFC",
"numero_horas": "2000",
"nombre": {
"nombre_corto": "DAW",
"nombre_largo": "Técnico Superior en Desarrollo de Aplicaciones Web"
},
"curso": [
{
"numero": "1",
"modulo": [
{
"id": "31",
"ref": "0186",
"titulo": "Bases de datos",
"numerohoras": "205"
},
{
"id": "32",
"ref": "0188",
"numerohoras": "90",
"titulo": "Entornos de desarrollo"
},
{
"id": "33",
"ref": "0194",
"numerohoras": "90",
"titulo": "Formación y orientación laboral"
},
{
"id": "34",
"ref": "0190",
"numerohoras": "140",
"titulo": "Lenguaje de marcas y sistemas de gestión de información"
},
{
"id": "34",
"ref": "0189",
"numerohoras": "270",
"titulo": "Programación"
},
{
"id": "35",
"ref": "0191",
"numerohoras": "205",
"titulo": "Sistemas informáticos"
}
]
},
{
"numero": "2",
"modulo": [
{
"id": "41",
"ref": "0286",
"titulo": "Desarrollo web en entorno cliente",
"numerohoras": "115"
},
{
"id": "42",
"ref": "0288",
"numerohoras": "180",
"titulo": "Desarrollo web en entorno servidor"
},
{
"id": "43",
"ref": "0294",
"numerohoras": "85",
"titulo": "Despliegue de aplicaciones web"
},
{
"id": "44",
"ref": "0290",
"numerohoras": "115",
"titulo": "Diseño de interfaces web"
},
{
"id": "45",
"ref": "0289",
"numerohoras": "30",
"titulo": "Proyecto de desarrollo de aplicaciones web"
},
{
"id": "46",
"ref": "0291",
"numerohoras": "40",
"titulo": "Inglés técnico para grado superior"
},
{
"id": "23",
"ref": "0294",
"numerohoras": "65",
"titulo": "Empresa e iniciativa emprendedora"
}
]
}
]
},
{
"codigo": "IFC03",
"nivel": "CFGS",
"familia": "IFC",
"numero_horas": "2000",
"nombre": {
"nombre_corto": "ASIR",
"nombre_largo": "Técnico Superior en Administración de Sistemas Informáticos en Red"
},
"curso": [
{
"numero": "1",
"modulo": [
{
"id": "ASIR01",
"ref": "0223",
"titulo": "Implantación de sistemas operativos",
"numerohoras": "231"
},
{
"id": "ASIR02",
"ref": "0226",
"titulo": "Planificación y administración de redes",
"numerohoras": "231"
},
{
"id": "ASIR03",
"ref": "0227",
"titulo": "Fundamentos de hardware",
"numerohoras": "165"
},
{
"id": "ASIR04",
"ref": "0228",
"titulo": "Gestión de bases de datos",
"numerohoras": "198"
},
{
"id": "ASIR05",
"ref": "0231",
"titulo": "Lenguajes de marcas y sistemas de gestión de información",
"numerohoras": "132"
},
{
"id": "ASIR06",
"ref": "0233",
"titulo": "Formación y orientación laboral",
"numerohoras": "99"
}
]
},
{
"numero": "2",
"modulo": [
{
"id": "ASIR07",
"ref": "0229",
"titulo": "Administración de sistemas operativos",
"numerohoras": "105"
},
{
"id": "ASIR08",
"ref": "0230",
"titulo": "Servicios de red e Internet",
"numerohoras": "126"
},
{
"id": "ASIR09",
"ref": "0232",
"titulo": "Implantación de aplicaciones web",
"numerohoras": "84"
},
{
"id": "ASIR10",
"ref": "0234",
"titulo": "Administración de sistemas gestores de bases de datos",
"numerohoras": "84"
},
{
"id": "ASIR11",
"ref": "0235",
"titulo": "Seguridad y alta disponibilidad",
"numerohoras": "126"
},
{
"id": "ASIR12",
"ref": "0236",
"titulo": "Empresa e iniciativa emprendedora",
"numerohoras": "66"
},
{
"id": "ASIR13",
"ref": "FCT",
"titulo": "Formación en centros de trabajo",
"numerohoras": "370"
},
{
"id": "ASIR14",
"ref": "PRJ",
"titulo": "Proyecto de Administración de Sistemas Informáticos en Red",
"numerohoras": "40"
}
]
}
]
},
{
"codigo": "IFC02",
"nivel": "CFGM",
"familia": "IFC",
"numero_horas": "2000",
"nombre": {
"nombre_corto": "SMR",
"nombre_largo": "Técnico en Sistemas Microinformáticos y Redes"
},
"curso": [
{
"numero": "1",
"modulo": [
{
"id": "SMR01",
"ref": "0223",
"titulo": "Montaje y mantenimiento de equipos",
"numerohoras": "198"
},
{
"id": "SMR02",
"ref": "0224",
"titulo": "Sistemas operativos monopuesto",
"numerohoras": "198"
},
{
"id": "SMR03",
"ref": "0225",
"titulo": "Aplicaciones ofimáticas",
"numerohoras": "231"
},
{
"id": "SMR04",
"ref": "0226",
"titulo": "Redes locales",
"numerohoras": "198"
},
{
"id": "SMR05",
"ref": "0233",
"titulo": "Formación y orientación laboral",
"numerohoras": "99"
}
]
},
{
"numero": "2",
"modulo": [
{
"id": "SMR06",
"ref": "0227",
"titulo": "Sistemas operativos en red",
"numerohoras": "168"
},
{
"id": "SMR07",
"ref": "0228",
"titulo": "Seguridad informática",
"numerohoras": "105"
},
{
"id": "SMR08",
"ref": "0229",
"titulo": "Servicios en red",
"numerohoras": "168"
},
{
"id": "SMR09",
"ref": "0230",
"titulo": "Aplicaciones web",
"numerohoras": "105"
},
{
"id": "SMR10",
"ref": "0234",
"titulo": "Empresa e iniciativa emprendedora",
"numerohoras": "66"
},
{
"id": "SMR11",
"ref": "FCT",
"titulo": "Formación en centros de trabajo",
"numerohoras": "370"
}
]
}
]
},
{
"codigo": "FB01",
"nivel": "CFGB",
"familia": "IFC",
"numero_horas": "2000",
"nombre": {
"nombre_corto": "INFOBAS",
"nombre_largo": "Título Profesional Básico en Informática de Oficina"
},
"curso": [
{
"numero": "1",
"modulo": [
{
"id": "INF01",
"ref": "MB101",
"titulo": "Aplicaciones básicas de ofimática",
"numerohoras": "160"
},
{
"id": "INF02",
"ref": "MB102",
"titulo": "Montaje y mantenimiento de sistemas y componentes informáticos",
"numerohoras": "160"
},
{
"id": "INF03",
"ref": "MB103",
"titulo": "Ciencias aplicadas I",
"numerohoras": "160"
},
{
"id": "INF04",
"ref": "MB104",
"titulo": "Comunicación y sociedad I",
"numerohoras": "160"
},
{
"id": "INF05",
"ref": "MB105",
"titulo": "Tutorización y orientación",
"numerohoras": "80"
}
]
},
{
"numero": "2",
"modulo": [
{
"id": "INF06",
"ref": "MB106",
"titulo": "Tratamiento de textos y presentación de información",
"numerohoras": "160"
},
{
"id": "INF07",
"ref": "MB107",
"titulo": "Operaciones auxiliares de mantenimiento de sistemas informáticos",
"numerohoras": "160"
},
{
"id": "INF08",
"ref": "MB108",
"titulo": "Ciencias aplicadas II",
"numerohoras": "160"
},
{
"id": "INF09",
"ref": "MB109",
"titulo": "Comunicación y sociedad II",
"numerohoras": "160"
},
{
"id": "INF10",
"ref": "FCT",
"titulo": "Formación en centros de trabajo",
"numerohoras": "260"
}
]
}
]
}
]
}

315
informacion-IES_v2.xml Normal file
View File

@ -0,0 +1,315 @@
<?xml version="1.0" encoding="UTF-8"?>
<instituto tipo="FP">
<nombre>IES Virgen de la Paloma</nombre>
<!-- Módulos físicos del instituto -->
<modulo id="M001" ubicacion="Aula 101" tipo="Laboratorio">
<descripcion>Laboratorio de informática</descripcion>
<capacidad>30</capacidad>
</modulo>
<modulo id="M002" ubicacion="Aula 102" tipo="Taller">
<descripcion>Taller de Fundamentos de Hardware</descripcion>
<capacidad>25</capacidad>
</modulo>
<modulo id="M003" ubicacion="Aula 102" tipo="Taller">
<descripcion>Taller de Automoción</descripcion>
<capacidad>25</capacidad>
</modulo>
<ciclo codigo="IFC05" nivel="CFGS" familia="IFC" numero_horas="2000">
<nombre>
<nombre_corto>DAM</nombre_corto>
<nombre_largo>Técnico Superior en Desarrollo de Aplicaciones Multiplataforma</nombre_largo>
</nombre>
<curso numero="1">
<modulo id="11" ref="0186">
<titulo> Bases de datos</titulo>
<numerohoras>205</numerohoras>
</modulo>
<modulo id="12" ref="0188">
<numerohoras>90</numerohoras>
<titulo>Entornos de desarrollo </titulo>
</modulo>
<modulo id="13" ref="0194">
<numerohoras>90</numerohoras>
<titulo>Formación y orientación laboral</titulo>
</modulo>
<modulo id="14" ref="0190">
<numerohoras>140</numerohoras>
<titulo>Lenguaje de marcas y sistemas de gestión de información</titulo>
</modulo>
<modulo id="14" ref="0189">
<numerohoras>270</numerohoras>
<titulo>Programación</titulo>
</modulo>
<modulo id="15" ref="0191">
<numerohoras>205</numerohoras>
<titulo>Sistemas informáticos</titulo>
</modulo>
</curso>
<curso numero="2">
<modulo id="21" ref="0286">
<titulo>Acceso a Datos</titulo>
<numerohoras>120</numerohoras>
</modulo>
<modulo id="22" ref="0288">
<numerohoras>120</numerohoras>
<titulo>Diseño de interfaces</titulo>
</modulo>
<modulo id="23" ref="0294">
<numerohoras>65</numerohoras>
<titulo>Empresa e iniciativa emprendedora </titulo>
</modulo>
<modulo id="24" ref="0290">
<numerohoras>80</numerohoras>
<titulo>Programación de servicios y procesos</titulo>
</modulo>
<modulo id="25" ref="0289">
<numerohoras>80</numerohoras>
<titulo>Programación multimedia y dispositivos móviles</titulo>
</modulo>
<modulo id="26" ref="0291">
<numerohoras>40</numerohoras>
<titulo>Inglés técnico para grado superior</titulo>
</modulo>
</curso>
</ciclo>
<ciclo codigo="IFC06" nivel="CFGS" familia="IFC" numero_horas="2000" >
<nombre>
<nombre_corto>DAW</nombre_corto>
<nombre_largo>Técnico Superior en Desarrollo de Aplicaciones Web</nombre_largo>
</nombre>
<curso numero="1">
<modulo id="31" ref="0186">
<titulo> Bases de datos</titulo>
<numerohoras>205</numerohoras>
</modulo>
<modulo id="32" ref="0188">
<numerohoras>90</numerohoras>
<titulo>Entornos de desarrollo </titulo>
</modulo>
<modulo id="33" ref="0194">
<numerohoras>90</numerohoras>
<titulo>Formación y orientación laboral</titulo>
</modulo>
<modulo id="34" ref="0190">
<numerohoras>140</numerohoras>
<titulo>Lenguaje de marcas y sistemas de gestión de información</titulo>
</modulo>
<modulo id="34" ref="0189">
<numerohoras>270</numerohoras>
<titulo>Programación</titulo>
</modulo>
<modulo id="35" ref="0191">
<numerohoras>205</numerohoras>
<titulo>Sistemas informáticos</titulo>
</modulo>
</curso>
<curso numero="2">
<modulo id="41" ref="0286">
<titulo>Desarrollo web en entorno cliente</titulo>
<numerohoras>115</numerohoras>
</modulo>
<modulo id="42" ref="0288">
<numerohoras>180</numerohoras>
<titulo>Desarrollo web en entorno servidor</titulo>
</modulo>
<modulo id="43" ref="0294">
<numerohoras>85</numerohoras>
<titulo>Despliegue de aplicaciones web</titulo>
</modulo>
<modulo id="44" ref="0290">
<numerohoras>115</numerohoras>
<titulo>Diseño de interfaces web </titulo>
</modulo>
<modulo id="45" ref="0289">
<numerohoras>30</numerohoras>
<titulo>Proyecto de desarrollo de aplicaciones web </titulo>
</modulo>
<modulo id="46" ref="0291">
<numerohoras>40</numerohoras>
<titulo>Inglés técnico para grado superior</titulo>
</modulo>
<modulo id="23" ref="0294">
<numerohoras>65</numerohoras>
<titulo>Empresa e iniciativa emprendedora </titulo>
</modulo>
</curso>
</ciclo> <ciclo codigo="IFC03" nivel="CFGS" familia="IFC" numero_horas="2000">
<nombre>
<nombre_corto>ASIR</nombre_corto>
<nombre_largo>Técnico Superior en Administración de Sistemas Informáticos en Red</nombre_largo>
</nombre>
<curso numero="1">
<modulo id="ASIR01" ref="0223">
<titulo>Implantación de sistemas operativos</titulo>
<numerohoras>231</numerohoras>
</modulo>
<modulo id="ASIR02" ref="0226">
<titulo>Planificación y administración de redes</titulo>
<numerohoras>231</numerohoras>
</modulo>
<modulo id="ASIR03" ref="0227">
<titulo>Fundamentos de hardware</titulo>
<numerohoras>165</numerohoras>
</modulo>
<modulo id="ASIR04" ref="0228">
<titulo>Gestión de bases de datos</titulo>
<numerohoras>198</numerohoras>
</modulo>
<modulo id="ASIR05" ref="0231">
<titulo>Lenguajes de marcas y sistemas de gestión de información</titulo>
<numerohoras>132</numerohoras>
</modulo>
<modulo id="ASIR06" ref="0233">
<titulo>Formación y orientación laboral</titulo>
<numerohoras>99</numerohoras>
</modulo>
</curso>
<curso numero="2">
<modulo id="ASIR07" ref="0229">
<titulo>Administración de sistemas operativos</titulo>
<numerohoras>105</numerohoras>
</modulo>
<modulo id="ASIR08" ref="0230">
<titulo>Servicios de red e Internet</titulo>
<numerohoras>126</numerohoras>
</modulo>
<modulo id="ASIR09" ref="0232">
<titulo>Implantación de aplicaciones web</titulo>
<numerohoras>84</numerohoras>
</modulo>
<modulo id="ASIR10" ref="0234">
<titulo>Administración de sistemas gestores de bases de datos</titulo>
<numerohoras>84</numerohoras>
</modulo>
<modulo id="ASIR11" ref="0235">
<titulo>Seguridad y alta disponibilidad</titulo>
<numerohoras>126</numerohoras>
</modulo>
<modulo id="ASIR12" ref="0236">
<titulo>Empresa e iniciativa emprendedora</titulo>
<numerohoras>66</numerohoras>
</modulo>
<modulo id="ASIR13" ref="FCT">
<titulo>Formación en centros de trabajo</titulo>
<numerohoras>370</numerohoras>
</modulo>
<modulo id="ASIR14" ref="PRJ">
<titulo>Proyecto de Administración de Sistemas Informáticos en Red</titulo>
<numerohoras>40</numerohoras>
</modulo>
</curso>
</ciclo>
<!-- Ciclo de Grado Medio: SMR -->
<ciclo codigo="IFC02" nivel="CFGM" familia="IFC" numero_horas="2000">
<nombre>
<nombre_corto>SMR</nombre_corto>
<nombre_largo>Técnico en Sistemas Microinformáticos y Redes</nombre_largo>
</nombre>
<curso numero="1">
<modulo id="SMR01" ref="0223">
<titulo>Montaje y mantenimiento de equipos</titulo>
<numerohoras>198</numerohoras>
</modulo>
<modulo id="SMR02" ref="0224">
<titulo>Sistemas operativos monopuesto</titulo>
<numerohoras>198</numerohoras>
</modulo>
<modulo id="SMR03" ref="0225">
<titulo>Aplicaciones ofimáticas</titulo>
<numerohoras>231</numerohoras>
</modulo>
<modulo id="SMR04" ref="0226">
<titulo>Redes locales</titulo>
<numerohoras>198</numerohoras>
</modulo>
<modulo id="SMR05" ref="0233">
<titulo>Formación y orientación laboral</titulo>
<numerohoras>99</numerohoras>
</modulo>
</curso>
<curso numero="2">
<modulo id="SMR06" ref="0227">
<titulo>Sistemas operativos en red</titulo>
<numerohoras>168</numerohoras>
</modulo>
<modulo id="SMR07" ref="0228">
<titulo>Seguridad informática</titulo>
<numerohoras>105</numerohoras>
</modulo>
<modulo id="SMR08" ref="0229">
<titulo>Servicios en red</titulo>
<numerohoras>168</numerohoras>
</modulo>
<modulo id="SMR09" ref="0230">
<titulo>Aplicaciones web</titulo>
<numerohoras>105</numerohoras>
</modulo>
<modulo id="SMR10" ref="0234">
<titulo>Empresa e iniciativa emprendedora</titulo>
<numerohoras>66</numerohoras>
</modulo>
<modulo id="SMR11" ref="FCT">
<titulo>Formación en centros de trabajo</titulo>
<numerohoras>370</numerohoras>
</modulo>
</curso>
</ciclo>
<!-- Ciclo de Grado Básico: Informática de Oficina -->
<ciclo codigo="FB01" nivel="CFGB" familia="IFC" numero_horas="2000">
<nombre>
<nombre_corto>INFOBAS</nombre_corto>
<nombre_largo>Título Profesional Básico en Informática de Oficina</nombre_largo>
</nombre>
<curso numero="1">
<modulo id="INF01" ref="MB101">
<titulo>Aplicaciones básicas de ofimática</titulo>
<numerohoras>160</numerohoras>
</modulo>
<modulo id="INF02" ref="MB102">
<titulo>Montaje y mantenimiento de sistemas y componentes informáticos</titulo>
<numerohoras>160</numerohoras>
</modulo>
<modulo id="INF03" ref="MB103">
<titulo>Ciencias aplicadas I</titulo>
<numerohoras>160</numerohoras>
</modulo>
<modulo id="INF04" ref="MB104">
<titulo>Comunicación y sociedad I</titulo>
<numerohoras>160</numerohoras>
</modulo>
<modulo id="INF05" ref="MB105">
<titulo>Tutorización y orientación</titulo>
<numerohoras>80</numerohoras>
</modulo>
</curso>
<curso numero="2">
<modulo id="INF06" ref="MB106">
<titulo>Tratamiento de textos y presentación de información</titulo>
<numerohoras>160</numerohoras>
</modulo>
<modulo id="INF07" ref="MB107">
<titulo>Operaciones auxiliares de mantenimiento de sistemas informáticos</titulo>
<numerohoras>160</numerohoras>
</modulo>
<modulo id="INF08" ref="MB108">
<titulo>Ciencias aplicadas II</titulo>
<numerohoras>160</numerohoras>
</modulo>
<modulo id="INF09" ref="MB109">
<titulo>Comunicación y sociedad II</titulo>
<numerohoras>160</numerohoras>
</modulo>
<modulo id="INF10" ref="FCT">
<titulo>Formación en centros de trabajo</titulo>
<numerohoras>260</numerohoras>
</modulo>
</curso>
</ciclo>
</instituto>

1
persona.xml Normal file
View File

@ -0,0 +1 @@
<ObjectNode><nombre>Juan</nombre><edad>30</edad><direccion><@tipo>principal</@tipo><calle>Gran Via</calle><ciudad>Madrid</ciudad></direccion><telefono><@tipo>movil</@tipo><#text>600123123</#text></telefono><telefono><@tipo>fijo</@tipo><#text>915551212</#text></telefono></ObjectNode>

26
pom.xml Normal file
View File

@ -0,0 +1,26 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>aadd_act1_12</groupId>
<artifactId>aadd_act1_12</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/tools.jackson.dataformat/jackson-dataformat-xml -->
<dependency>
<groupId>tools.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<release>24</release>
</configuration>
</plugin>
</plugins>
</build>
</project>

View File

@ -0,0 +1,316 @@
package es.palomafp.aadd.inm;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
import java.util.Scanner;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
import tools.jackson.databind.JsonNode;
import tools.jackson.databind.ObjectMapper;
import tools.jackson.databind.node.ArrayNode;
import tools.jackson.dataformat.xml.XmlMapper;
import tools.jackson.dataformat.xml.ser.ToXmlGenerator;
/**
*
* GestorInstitutoXML: Clase que procesa un fichero XML de un instituto
* utilizando Jackson
*
* @author Isidoro Nevares Martín - IES Virgen de la Paloma
* @date 26 sept 2025
*/
public class GestorInstitutoXML {
private static final String RUTA_FICHERO_XML = "informacion-IES_v2.xml";
private static final String RUTA_FICHERO_JSON = "informacion-IES_v2.json";
private static final String RUTA_FICHERO_SALIDA_XML = "informacion-ciclos_IES.xml";
public static void main(String[] args) {
GestorInstitutoXML gestor = new GestorInstitutoXML();
Scanner scanner = new Scanner(System.in); // Crear el scanner
System.out.print("Introduce una opción de procesamiento XML: \n");
String opcion = scanner.nextLine(); // Leer una opción introducida.
switch (opcion) {
case "1":
System.out.println("Imprimir instituto");
gestor.imprimirInstituto();
break;
case "2":
System.out.println("Imprimir ciclos");
gestor.imprimirCiclos();
break;
case "3":
System.out.println("Imprimir módulos que empiezan por 'Programa'");
gestor.imprimirModulosPrograma();
break;
case "4":
System.out.println(
"Imprimir módulos cuyo título empieza por “Programa” y el número de horas es mayor de 100 o bien el título incluyen la palabra “desarrollo” (da igual mayúscula o minúscula) que, además, ocurran en ciclos de nivel grado superior (CFGS) del curso 1");
gestor.imprimirModulosFiltro2();
break;
case "5":
System.out.println("Almacenar instituto en fichero usando Jackson-JsonNode");
gestor.guardarInstitutoFicheroJackson();
break;
}
scanner.close();
}
private void imprimirInstituto() {
JsonNode nodoRaiz = obtenerJsonNodeDeFicheroXML(); // El nodo raíz es el nodo "instituto" (y únicamente hay
// uno).
// Obtener los atributos del nodo "instituto"
String nombreInstituto = nodoRaiz.path("nombre").asString();
String tipoInstituto = nodoRaiz.path("tipo").asString();
System.out.println("Nombre del Instituto: " + nombreInstituto + " - Tipo del Instituto: " + tipoInstituto);
}
private void imprimirCiclos() {
JsonNode nodoRaiz = obtenerJsonNodeDeFicheroXML();
// Obtener los nodos "ciclo"
ArrayNode ciclos = convertirJsonNodeEnArrayNode(nodoRaiz.path("ciclo"));
for (JsonNode ciclo : ciclos) {
String codigo = ciclo.path("codigo").asString();// Accedemos al atributo 'codigo'
JsonNode nodoNombreCiclo = ciclo.path("nombre");
String nombreCorto = nodoNombreCiclo.path("nombre_corto").asString();// Accedemos al atributo 'nombre corto'
System.out.println("Ciclo - Código: " + codigo + ", Nombre Corto: " + nombreCorto);
}
}
private void imprimirModulosPrograma() {
JsonNode nodoRaiz = obtenerJsonNodeDeFicheroXML();
// Obtener los nodos "ciclo"
ArrayNode ciclos = convertirJsonNodeEnArrayNode(nodoRaiz.path("ciclo"));
for (JsonNode ciclo : ciclos) {
// Obtener los nodos "curso"
ArrayNode cursos = convertirJsonNodeEnArrayNode(ciclo.path("curso"));
for (JsonNode curso : cursos) {
// Obtener los nodos "modulo"
ArrayNode modulos = convertirJsonNodeEnArrayNode(curso.path("modulo"));
for (JsonNode modulo : modulos) {
String titulo = modulo.path("titulo").asString();
if (!titulo.isEmpty() && titulo.startsWith("Programa")) {
String id = modulo.path("id").asString();
String referencia = modulo.path("ref").asString();
String numeroHoras = modulo.path("numerohoras").asString();
System.out.println("Modelo: - Id: " + id + ", Referencia: " + referencia + ", Título: " + titulo
+ ", Número de horas: " + numeroHoras);
}
}
}
}
}
private void imprimirModulosFiltro2() {
JsonNode nodoRaiz = obtenerJsonNodeDeFicheroXML();
// Obtener los nodos "ciclo"
ArrayNode ciclos = convertirJsonNodeEnArrayNode(nodoRaiz.path("ciclo"));
for (JsonNode ciclo : ciclos) {
String nivel = ciclo.path("nivel").asString();
if (nivel.equals("CFGS")) {
// Obtener los nodos "curso"
ArrayNode cursos = convertirJsonNodeEnArrayNode(ciclo.path("curso"));
for (JsonNode curso : cursos) {
String numeroCurso = curso.path("numero").asString();
if (numeroCurso.equals("1")) {
// Obtener los nodos "modulo"
ArrayNode modulos = convertirJsonNodeEnArrayNode(curso.path("modulo"));
for (JsonNode modulo : modulos) {
String titulo = modulo.path("titulo").asString();
int numeroHoras = Integer.parseInt(modulo.path("numerohoras").asString());
if ((!titulo.isEmpty() && titulo.startsWith("Programa") && numeroHoras > 100)
|| titulo.toLowerCase().contains("desarrollo")) {
String id = modulo.path("id").asString();
String referencia = modulo.path("ref").asString();
System.out.println("Modelo: - Id: " + id + ", Referencia: " + referencia + ", Título: "
+ titulo + ", Número de horas: " + numeroHoras);
}
}
}
}
}
}
}
private void guardarInstitutoFicheroJackson() {
JsonNode nodoInstituto = obtenerJsonNodeDeFicheroXML();
StringWriter sw = new StringWriter();
XmlMapper xmlMapper = new XmlMapper();
// Creamos el ToXmlGenerator (es un JsonGenerator especializado para XML)
ToXmlGenerator generador = (ToXmlGenerator) xmlMapper.writerWithDefaultPrettyPrinter().createGenerator(sw);
try { // Escribimos la declaración XML (<?xml version='1.0' encoding='UTF-8'?>)
generador.getStaxWriter().writeStartDocument("UTF-8", "1.0");
generador.getStaxWriter().writeCharacters("\n");
} catch (XMLStreamException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Iniciamos la escritura del objeto XML
generador.initGenerator();
// Trabajamos con el nodo instituto
guardarInstitutoFicheroJackson(nodoInstituto, generador);
generador.close();
Path out = Paths.get(RUTA_FICHERO_SALIDA_XML);
try {
Files.writeString(out, sw.toString(), StandardCharsets.UTF_8,
StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void guardarInstitutoFicheroJackson(JsonNode nodoInstituto, ToXmlGenerator generador) {
generador.setNextName(new QName(null, "instituto")); // empezamos el elemento <instituto>
generador.writeStartObject();
generador.setNextIsAttribute(true);
generador.writeStringProperty("tipo", nodoInstituto.path("tipo").asString()); // escribe atributo tipo="CFGS"
generador.setNextIsAttribute(false);
generador.writeStringProperty("nombre", nodoInstituto.path("nombre").asString()); // nombre="IES Virgen de la Paloma"
// Obtener los nodos "ciclo" para almacenarlos
ArrayNode ciclos = convertirJsonNodeEnArrayNode(nodoInstituto.path("ciclo"));
for (JsonNode ciclo : ciclos) {
guardarCiclosFicheroJackson(ciclo, generador);
}
generador.writeEndObject(); // termina <instituto>
}
private void guardarCiclosFicheroJackson(JsonNode nodoCiclo, ToXmlGenerator generador) {
// Crear el elemento ciclo
generador.writeName("ciclo");
generador.writeStartObject();
// Escribir los atributos del ciclo
String nivel = nodoCiclo.path("nivel").asString();
String codigo = nodoCiclo.path("codigo").asString();
generador.setNextIsAttribute(true);
generador.writeStringProperty("codigo", codigo);
generador.writeStringProperty("nivel", nivel);
generador.setNextIsAttribute(false);
// Escribir los elementos del ciclo
String nombreCorto = nodoCiclo.path("nombre").path("nombre_corto").asString();
String nombreLargo = nodoCiclo.path("nombre").path("nombre_largo").asString();
generador.writeStringProperty("nombre_corto", nombreCorto);
generador.writeStringProperty("nombre_largo", nombreLargo);
// Obtener los nodos "curso"
ArrayNode cursos = convertirJsonNodeEnArrayNode(nodoCiclo.path("curso"));
for (JsonNode curso : cursos) {
guardarCursoFicheroJackson(curso, generador);
}
// Cerrar el elemento ciclo
generador.writeEndObject();
}
private void guardarCursoFicheroJackson(JsonNode nodoCurso, ToXmlGenerator generador) {
// Crear el elemento curso
generador.writeName("curso");
generador.writeStartObject();
// Escribir los atributos del curso
String numero = nodoCurso.path("numero").asString();
generador.setNextIsAttribute(true);
generador.writeStringProperty("num", numero);
generador.setNextIsAttribute(false);
// Obtener los nodos "modulo"
ArrayNode modulos = convertirJsonNodeEnArrayNode(nodoCurso.path("modulo"));
for (JsonNode modulo : modulos) {
guardarModuloFicheroJackson(modulo, generador);
}
// Cerrar el elemento curso
generador.writeEndObject();
}
private void guardarModuloFicheroJackson(JsonNode nodoModulo, ToXmlGenerator generador) {
// Crear el elemento modulo
generador.writeName("modulo");
generador.writeStartObject();
// Escribir los atributos del modulo
String id = nodoModulo.path("id").asString();
String ref = nodoModulo.path("ref").asString();
String numeroHoras = nodoModulo.path("numerohoras").asString();
generador.setNextIsAttribute(true);
generador.writeStringProperty("id", id);
generador.writeStringProperty("ref", ref);
generador.writeStringProperty("numero_horas", numeroHoras);
generador.setNextIsAttribute(false);
String titulo = nodoModulo.path("titulo").asString();
generador.writeStringProperty("titulo", titulo);
// Cerrar el elemento curso
generador.writeEndObject();
}
private JsonNode obtenerJsonNodeDeFicheroXML() {
// Cargar el XML
XmlMapper xmlMapper = new XmlMapper();
JsonNode root = xmlMapper.readTree(new File(RUTA_FICHERO_XML));
return root;
}
private JsonNode obtenerJsonNodeDeFicheroJSON() {
// Cargar el XML
ObjectMapper xmlMapper = new ObjectMapper();
JsonNode root = xmlMapper.readTree(new File(RUTA_FICHERO_JSON));
return root;
}
private ArrayNode convertirJsonNodeEnArrayNode(JsonNode node) {
ObjectMapper mapper = new ObjectMapper();
if (node.isArray()) {
return (ArrayNode) node;
} else {
ArrayNode arrayNode = mapper.createArrayNode();
if (!node.isMissingNode()) {
arrayNode.add(node);
}
return arrayNode;
}
}
}

View File

@ -0,0 +1,4 @@
Manifest-Version: 1.0
Build-Jdk-Spec: 25
Created-By: Maven Integration for Eclipse

View File

@ -0,0 +1,7 @@
#Generated by Maven Integration for Eclipse
#Fri Oct 31 12:46:03 CET 2025
artifactId=aadd_act1_12
groupId=aadd_act1_12
m2e.projectLocation=C\:\\Users\\ineva\\INM\\Personal\\Trabajo\\00-Educaci\u00F3n - CM\\10-Curso 2025-2026\\02-Acceso de datos -DAM2\\workspace\\aadd_act1_13
m2e.projectName=aadd_act1_13
version=0.0.1-SNAPSHOT

View File

@ -0,0 +1,26 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>aadd_act1_12</groupId>
<artifactId>aadd_act1_12</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/tools.jackson.dataformat/jackson-dataformat-xml -->
<dependency>
<groupId>tools.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.13.0</version>
<configuration>
<release>24</release>
</configuration>
</plugin>
</plugins>
</build>
</project>