Estoy tratando de desarrollar una función de exportación XML para dar a mis usuarios de la aplicación para exportar sus datos en un formato XML. Tengo esta característica lista y funcionando hasta que comenzó a fallar en algunos casos. Entonces me di cuenta de que era debido a algunos caracteres especiales que necesitan ser codificados. por ejemplo, los datos pueden contener & o! o% o 'o # etc. etc. y esto necesita ser escapado correctamente. Me preguntaba si hay una utilidad genérica disponible que pueda escapar a todos los caracteres especiales según la especificación XML. No pude encontrar nada en Google.Escapar carácter especial cuando se genera un XML en Java
¿Existe algo así como que ya existe? o ¿Hay alguna otra forma de hacerlo?
Aquí está el código que estoy utilizando para generar XML
Document xmldoc = new DocumentImpl();
Element root = xmldoc.createElement("Report");
Element name= xmldoc.createElement((exportData.getChartName() == null) ? "Report" : exportData.getChartName());
if (exportData.getExportDataList().size() > 0
&& exportData.getExportDataList().get(0) instanceof Vector) {
// First row is the HEADER, i.e name
Vector name = exportData.getExportDataList().get(0);
for (int i = 1; i value = exportData.getExportDataList().get(i);
Element sub_root = xmldoc.createElement("Data");
//I had to remove a for loop from here. StackOverflow description field would not take that. :(
// Insert header row
Element node = xmldoc.createElementNS(null, replaceUnrecognizedChars(name.get(j)));
Node node_value = xmldoc.createTextNode(value.get(j));
node.appendChild(node_value);
sub_root.appendChild(node);
chartName.appendChild(sub_root);
}
}
}
root.appendChild(name);
// Prepare the DOM document for writing
Source source = new DOMSource(root);
// Prepare the output file
Result result = new StreamResult(file);
// Write the DOM document to the file
Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.transform(source, result);`
XML de ejemplo:
<Data>
<TimeStamp>2010-08-31 00:00:00.0</TimeStamp>
<[Name that needs to be encoded]>0.0</[Name that needs to be encoded]>
<Group_Average>1860.0</Group_Average>
</Data>
Gracias. Este es práctico, pero el problema es que solo maneja < > "& 'Estoy buscando algo que sea más extenso. La cadena que quiero escapar se está usando como nombre de nodo. Ahora también he agregado una muestra XML en la pregunta –
De acuerdo con W3C para XML estándar, existe un número limitado de caracteres que se pueden usar como etiqueta de elemento. Puede crear un nodo genérico y agregar su encabezado como valor de un atributo, por ejemplo, – gigadot
Aquí está la regla para el nombre de la etiqueta del elemento http://www.w3.org/TR/REC-xml/#NT-Name No incluye < >" & '. – gigadot