XML - agregar tipo de dato al xml

 
Vista:

agregar tipo de dato al xml

Publicado por ivanjava (2 intervenciones) el 15/09/2006 20:25:04
hola de ante mano muchas gracias, mi problema es que genero un archivo xml, con el resultado de un query, atraves del API XERCES, mi duda es que nose como agregarle tambien el tipo de dato por ejemplo este es el archivo xml que genera la ejecucion del query:

- <Elemento numero="12">
<folio />
<monto>3000.0000</monto>
<fecha>2006-08-08 00:00:00.000</fecha>
<tipo>D</tipo>
</Elemento>
- <Elemento numero="12">
<folio />
<monto>1000.0000</monto>
<fecha>2006-08-08 00:00:00.000</fecha>
<tipo>R</tipo>
</Elemento>

lo que quiero es agregarle que tipo de dato es el contenido de cada etiqueta por ejemplo monto es de tipo integer. mi base de datos esta en MSSQL y el codigo para generar este archivo xml es el siguiente:

Document doc = new DocumentImpl();
Element raiz = doc.createElement("Resultado");

ResultSetMetaData rMeta = res.getMetaData();
int nCols = rMeta.getColumnCount();
while (res.next()) {
Element reg = doc.createElement("Elemento");
reg.setAttribute(rMeta.getColumnName(1), res.getString(1));
for(int i=2; i<=nCols; i++) {

Element campo = doc.createElement(rMeta.getColumnName(i));
campo.appendChild(doc.createTextNode(res.getString(i)));
System.out.println("Tipo -> " + campo.getNodeType());
reg.appendChild(campo);
}
raiz.appendChild(reg);
}
doc.appendChild(raiz);
//cnx1.close();
// cnx1.cnx.close();

OutputFormat formato = new OutputFormat(doc, "UTF-8", true);

doc.getDocumentElement();
// Document doc1= new Document();

StringWriter s = new StringWriter();

XMLSerializer ser = new XMLSerializer(s, formato);
//writer.write( s.toString());
ser.serialize(doc);

System.out.println(s.toString());

por favor si alguien puede ayudarme se lo agradecere muchisimo , saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Agregar tipos de datos a elementos en un archivo XML generado con Xerces API

Publicado por Alejandro (258 intervenciones) el 13/07/2023 20:18:49
Para agregar información sobre el tipo de dato a cada elemento en el archivo XML generado con Xerces API, puedes utilizar la información del `ResultSetMetaData` para determinar el tipo de dato de cada columna y luego agregar esa información al atributo o contenido del elemento correspondiente. Aquí tienes una solución para lograrlo:

1. Obtén el tipo de dato de cada columna del `ResultSetMetaData`:
1
2
3
4
5
6
7
ResultSetMetaData rMeta = res.getMetaData();
int nCols = rMeta.getColumnCount();
List<Integer> columnTypes = new ArrayList<>();
for (int i = 1; i <= nCols; i++) {
    int columnType = rMeta.getColumnType(i);
    columnTypes.add(columnType);
}

2. Utiliza los tipos de dato para agregar información en el archivo XML:
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
while (res.next()) {
    Element reg = doc.createElement("Elemento");
    reg.setAttribute(rMeta.getColumnName(1), res.getString(1));
    for (int i = 2; i <= nCols; i++) {
        Element campo = doc.createElement(rMeta.getColumnName(i));
        String columnValue = res.getString(i);
        int columnType = columnTypes.get(i - 2); // Restamos 2 porque el índice en columnTypes comienza en 0 y omitimos la primera columna en rMeta
 
        // Agrega la información del tipo de dato como atributo o contenido del elemento
        if (columnType == Types.INTEGER) {
            campo.setAttribute("tipo", "integer");
            campo.appendChild(doc.createTextNode(columnValue));
        } else if (columnType == Types.DECIMAL) {
            campo.setAttribute("tipo", "decimal");
            campo.appendChild(doc.createTextNode(columnValue));
        } else if (columnType == Types.DATE || columnType == Types.TIMESTAMP) {
            campo.setAttribute("tipo", "date");
            campo.appendChild(doc.createTextNode(columnValue));
        } else {
            campo.appendChild(doc.createTextNode(columnValue));
        }
 
        reg.appendChild(campo);
    }
    raiz.appendChild(reg);
}

En este ejemplo, se utilizan algunos tipos de datos comunes como `INTEGER`, `DECIMAL`, `DATE` y `TIMESTAMP`. Puedes ajustar los tipos de datos y sus correspondientes atributos o contenido según tus necesidades y el mapeo de tipos de datos de tu base de datos.

Esta solución agregará información sobre el tipo de dato al archivo XML generado. Puedes adaptarla según tus requisitos específicos y las reglas de mapeo de tipos de datos que deseas aplicar.

Espero que esta solución te sea útil. ¡Buena suerte con tu proyecto!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar