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

Imágen de perfil
Val: 591
Bronce
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Como crear un archivo XML con Javagráfica de visualizaciones


Java

Publicado el 24 de Junio del 2015 por Xavi (534 códigos)
38.371 visualizaciones desde el 24 de Junio del 2015
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(9)

Publicado el 24 de Junio del 2015gráfica de visualizaciones de la versión: Versión 1.0
38.373 visualizaciones desde el 24 de Junio del 2015
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 (9)

Imágen de perfil
26 de Junio del 2015
estrellaestrellaestrellaestrellaestrella
buen código hay que trabajarlo mas y mejorarlo
Responder
Alberto
31 de Marzo del 2019
estrellaestrellaestrellaestrellaestrella
Una pregunta y como se podría mandar a leer y visualizar el contenido del archivo XML generado con DOM?
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
4 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
jose
24 de Febrero del 2019
estrellaestrellaestrellaestrellaestrella
amigo me podrías mandar un correo para saber si ya quedo la soluciona tu problema, en note++ quedo solucion
Responder
Luis Miguel
3 de Marzo del 2020
estrellaestrellaestrellaestrellaestrella
Hola Jose,

Me podrías por favor compartir la solución al ejemplo de ABUNDIO.

O como se escribiría en esto en java

<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">

Muchas gracias
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...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s3202