Código de Java - Como crear un archivo XML con Java

Imágen de perfil

Como crear un archivo XML con Javagráfica de visualizaciones


Java

estrellaestrellaestrellaestrellaestrella(6)
Publicado el 24 de Junio del 2015 por Xavi
21.909 visualizaciones desde el 24 de Junio del 2015. Una media de 133 por semana
El DOM incorpora varias maneras para crear archivos XML de manera sencilla.
Primeramente hay que crear un documento con al clase DocumentBuilder, desde ahí se van creando los nodos, y atributos de cada elemento.
En este sencillo código se muestra como utilizar DOM para crear un archivo XML

Versión 1.0
estrellaestrellaestrellaestrellaestrella(6)

Actualizado el 25 de Junio del 2015 (Publicado el 24 de Junio del 2015)gráfica de visualizaciones de la versión: Versión 1.0
21.912 visualizaciones desde el 24 de Junio del 2015. Una media de 133 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

Se genera un archivo XML como este:
1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<compania>
	<empleado id="1">
		<nombre>Manuel</nombre>
		<appellidos>Gonzalez</appellidos>
		<seccion>almacen</seccion>
		<salario>1000</salario>
	</empleado>
</compania>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
 
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
 
public class WriteXMLFile {
 
	public static void main(String argv[]) {
 
	  try {
 
		DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
		DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
 
		// elemento raiz
		Document doc = docBuilder.newDocument();
		Element rootElement = doc.createElement("compania");
		doc.appendChild(rootElement);
 
		// empleado
		Element empleado = doc.createElement("empleado");
		rootElement.appendChild(empleado);
 
		// atributo del elemento empleado
		Attr attr = doc.createAttribute("id");
		attr.setValue("1");
		empleado.setAttributeNode(attr);
 
		// nombre
		Element nombre = doc.createElement("nombre");
		nombre.appendChild(doc.createTextNode("Manuel"));
		empleado.appendChild(nombre);
 
		// apellidos
		Element apellidos = doc.createElement("appellidos");
		apellidos.appendChild(doc.createTextNode("Gonzalez"));
		empleado.appendChild(apellidos);
 
		// seccion
		Element seccion = doc.createElement("seccion");
		seccion.appendChild(doc.createTextNode("almacen"));
		empleado.appendChild(seccion);
 
		// salario
		Element salario = doc.createElement("salario");
		salario.appendChild(doc.createTextNode("1000"));
		empleado.appendChild(salario);
 
		// escribimos el contenido en un archivo .xml
		TransformerFactory transformerFactory = TransformerFactory.newInstance();
		Transformer transformer = transformerFactory.newTransformer();
		DOMSource source = new DOMSource(doc);
		StreamResult result = new StreamResult(new File("C:\\archivo.xml"));
		//StreamResult result = new StreamResult(new File("archivo.xml"));
 
		// Si se quiere mostrar por la consola...
		// StreamResult result = new StreamResult(System.out);
 
		transformer.transform(source, result);
 
		System.out.println("File saved!");
 
		} catch (ParserConfigurationException pce) {
			pce.printStackTrace();
		} catch (TransformerException tfe) {
			tfe.printStackTrace();
		}
	}
}



Comentarios sobre la versión: Versión 1.0 (6)

Imágen de perfil
Ing. Domenico
26 de Junio del 2015
estrellaestrellaestrellaestrellaestrella
buen código hay que trabajarlo mas y mejorarlo
Responder
Francisco
22 de Marzo del 2016
estrellaestrellaestrellaestrellaestrella
Hola, me parece muy buen código para la explicación de la construcción de los xml, muy clarito, enhorabuena.
Responder
Ramon
04 de Marzo del 2018
estrellaestrellaestrellaestrellaestrella
Quiero aportar mi grano de arena para aquellos que quieran escribir un fichero XML cogiendo los datos de una BBDD:

public void escribirFicheroXML() throws SQLException, ParserConfigurationException, TransformerFactoryConfigurationError, TransformerException {
//Conexion a la BBDD
String JDBC_DRIVER = "com.mysql.jdbc.Driver";
String DB_URL = "jdbc:mysql://localhost/test";
String USER = "root";
String PASS = "";

Connection conn;
Statement stmt;
ResultSet rs;

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
DOMImplementation implementation = builder.getDOMImplementation();
Document document = implementation.createDocument(null, "datosJugador", null);
document.setXmlVersion("1.0");

//conexion
conn = DriverManager.getConnection(DB_URL, USER, PASS);
stmt = conn.createStatement();
//Query para acceder a los datos que queramos incluir

String query = "Aqui pondriamos la query";
rs = stmt.executeQuery(query);

Element raiz = document.getDocumentElement();

//Ahora vamos al lio,
while (rs.next()) {

Element elementoRaiz = document.createElement("elementoRaiz");

Element primerElemento = document.createElement("primerElemento");
Text primerElementoTexto = document.createTextNode(rs.getString("primerElemento"));
primerElemento.appendChild(primerElementoTexto);

Element segundoElemento = document.createElement("segundoElemento");
Text segundoElementoTexto = document.createTextNode(rs.getString("segundoElemento"));
segundoElemento.appendChild(segundoElementoTexto);

Element tercerElemento = document.createElement("tercerElemento");
Text tercerElementoTexto = document.createTextNode(rs.getString("tercerElemento"));
tercerElemento.appendChild(tercerElementoTexto);

elementoRaiz.appendChild(primerElemento);
elementoRaiz.appendChild(segundoElemento);
elementoRaiz.appendChild(tercerElemento);

raiz.appendChild(elementoRaiz);

}
Source source = new DOMSource(document);
//Indicamos donde lo queremos guardar
Result result = new StreamResult(new java.io.File("datosElementos"+".xml")); //nombre del archivo
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(source, result);
rs.close();
stmt.close();
conn.close();
}
Responder
Edison
17 de Marzo del 2018
estrellaestrellaestrellaestrellaestrella
Muy buen aporte me ayuda mucho en lo q deseo aprender.
Responder
ABUNDIO
26 de Julio del 2018
estrellaestrellaestrellaestrellaestrella
COmo quedaria esto
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="https://www.siged.sep.gob.mx/titulos/"
targetNamespace="https://www.siged.sep.gob.mx/titulos/" elementFormDefault="qualified">
<xs:element name="TituloElectronico">
<xs:annotation>
<xs:documentation>Estándar para la generación de títulos profesionales, diplomas o grados
académicos electrónicos.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="FirmaResponsables">
<xs:annotation>
<xs:documentation>Nodo que contiene las firmas electrónicas aplicadas por los responsables
de las instituciones educativas.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="FirmaResponsable" maxOccurs="unbounded" minOccurs="1">
<xs:annotation>
<xs:documentation>Nodo que contiene el detalle de la firma electrónica aplicada al
documento electrónico, por los responsables de la institución educativa.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="nombre" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el nombre del firmante responsable.</
xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="primerApellido" type="xs:string"
use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el primer apellido del firmante
responsable.</xs:documentation>
</xs:annotation>
</xs:attribute>

<xs:attribute name="segundoApellido" type="xs:string"
use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional que contiene el segundo apellido del firmante
responsable.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="curp" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene CURP del firmante responsable.</
xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="idCargo" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el identificador del cargo que desempeña
el responsable de la institución.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="cargo" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el valor del cargo que desempeña el
responsable de la institución.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="abrTitulo" type="xs:string"
form="unqualified" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional que contiene abreviatura del título o grado académico
del firmante.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="sello" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido con valor del sello digital del título electrónico,
expresado en una cadena de texto en formato Base64.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="certificadoResponsable" type="xs:string"
use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el certificado de sello (archivo .cer) que
ampara al título electrónico como texto, en formato Base64.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="noCertificadoResponsable" type="xs:string"
use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el número de serie del certificado de
sello (archivo .cer) del responsable que ampara al título electrónico.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Institucion">
<xs:annotation>
<xs:documentation>Nodo que contiene la información que identifica a la institución
educativa.</xs:documentation>
</xs:annotation>
<xs:complexType>

<xs:attribute name="cveInstitucion" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el identificador de la institución educativa
que emitió el documento.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="nombreInstitucion" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el nombre de la institución educativa que
emitió el documento.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Carrera">
<xs:annotation>
<xs:documentation>Nodo que contiene la información de la carrera cursada por el
profesionista.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="cveCarrera" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el identificador de la carrera.</
xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="nombreCarrera" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el nombre de la carrera.</
xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="fechaInicio" type="xs:date" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional que contiene la fecha de inicio de la carrera cursada.</
xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="fechaTerminacion" type="xs:date" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene la fecha de terminación de la carrera
cursada.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="idAutorizacionReconocimiento" type="xs:integer"
use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el identificador correspondiente al tipo de
autorización o reconocimiento de estudios otorgado por autoridad competente.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="autorizacionReconocimiento" type="xs:string"
use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene la descripción del tipo de autorización o
reconocimiento de estudios otorgado por autoridad competente.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="numeroRvoe" type="xs:string" form="unqualified"
use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional que indica el número de Reconocimiento de Validez
Oficial de Estudios otorgado por la autoridad competente. </xs:documentation>

</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Profesionista">
<xs:annotation>
<xs:documentation>Nodo que contiene los datos del profesionista.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="curp" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el valor del CURP del profesionista.</
xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="nombre" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el nombre del profesionista.
</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="primerApellido" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el primer apellido del profesionista.</
xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="segundoApellido" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional que contiene el segundo apellido del
profesionista.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="correoElectronico" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el correo electrónico del profesionista.</
xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Expedicion">
<xs:annotation>
<xs:documentation>Nodo que contiene los datos de la expedición del título profesional,
diploma o grado académico electrónico.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="fechaExpedicion" type="xs:date" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene la fecha de expedición del documento.</
xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="idModalidadTitulacion" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el identificador correspondiente a la
modalidad de titulación.</xs:documentation>
</xs:annotation>
</xs:attribute>

<xs:attribute name="modalidadTitulacion" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene la descripción de la modalidad de
titulación.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="fechaExamenProfesional" type="xs:date" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional que contiene la fecha del examen profesional. Se
debe informar dependiendo de la modalidad de titulación.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="fechaExencionExamenProfesional" type="xs:date"
use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional que contiene la fecha de exención del examen
profesional. Se debe informar dependiendo de la modalidad de titulación.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="cumplioServicioSocial" type="xs:integer" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene si el profesionista cumplió con el servicio
social.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="idFundamentoLegalServicioSocial" type="xs:integer"
use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el identificador correspondiente al
fundamento legal relativo a la realización del servicio social.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="fundamentoLegalServicioSocial" type="xs:string"
use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el fundamento legal relativo a la
realización del servicio social.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="idEntidadFederativa" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el identificador de la entidad federativa,
donde se expidió el documento electrónico.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="entidadFederativa" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene la descripción de la entidad federativa,
donde se expidió el documento electrónico.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Antecedente">
<xs:annotation>
<xs:documentation>Nodo que contiene los datos de estudios antecedentes del
profesionista.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="institucionProcedencia" type="xs:string" use="required">
<xs:annotation>

<xs:documentation>Atributo requerido que contiene el nombre de la institución de procedencia
de los estudios de antecedente.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="idTipoEstudioAntecedente" type="xs:integer"
use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el identificador correspondiente al tipo de
estudio de antecedente.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="tipoEstudioAntecedente" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene la descripción del tipo de estudio de
antecedente.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="idEntidadFederativa" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene el identificador de la entidad federativa de
los estudios de antecedente.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="entidadFederativa" type="xs:string" use="optional">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene la descripción de la entidad federativa de
los estudios de antecedente.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="fechaInicio" type="xs:date" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional que contiene la fecha de inicio de los estudios de
antecedente.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="fechaTerminacion" type="xs:date" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que contiene la fecha de terminación de los estudios de
antecedente.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="noCedula" type="xs:string" form="unqualified"
use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional que contiene el número de cédula correspondiente a los
estudios de antecedente.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="Autenticacion">
<xs:annotation>
<xs:documentation>Nodo exclusivo de la autoridad competente que otorgó la Autorización o
Reconocimiento de Validez Oficial de Estudios (RVOE), donde se incluirá el sello de la autenticación del documento
electrónico.
</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:any maxOccurs="1" minOccurs="0" namespace="any"/>
</xs:sequence>
</xs:complexType>

</xs:element>
</xs:sequence>
<xs:attribute name="version" use="required" fixed="1.0">
<xs:annotation>
<xs:documentation>Atributo requerido con valor prefijado a 1.0 que indica la versión del
estándar bajo el que se encuentra expresado el Título Electrónico.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="folioControl" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que indica el folio de control interno asignado al título
electrónico.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
Responder
tony
18 de Septiembre del 2018
estrellaestrellaestrellaestrellaestrella
Buenas tengo un problema a la hora de escribir el xml me lo escribe en una sola linea no hace los saltos, copie este código exactamente igual para hacer la prueba y no funciona.
Responder

Comentar la versión: Versión 1.0

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s3202  
Revisar política de publicidad