¿Cómo convierto una sola palabra en XML válido?
-
26-10-2019 - |
Pregunta
Tengo el siguiente código que convierte una cadena, que paso a la función, en un documento:
DocumentBuilderFactory dbFactory_ = DocumentBuilderFactory.newInstance();
Document doc_;
void toXml(String s)
{
documentBuild();
DocumentBuilder dBuilder = dbFactory_.newDocumentBuilder();
StringReader reader = new StringReader(s);
InputSource inputSource = new InputSource(reader);
doc_ = dBuilder.parse(inputSource);
}
El problema es que parte del código heredado que estoy usando pasa a esta función toxml una sola palabra como RANDOM
o FICTION
. Me gustaría convertir estas llamadas en XML válido antes de tratar de analizarlo. Ahora mismo si llamo a la función con s = ficción, devuelve un SAXParseExeption
error. ¿Alguien podría aconsejarme sobre la forma correcta de hacer esto? Si usted tiene alguna pregunta, hágamelo saber.
Gracias por tu tiempo
-Josh
Solución
Esto crea un XMLDocument con una prueba de elemento
function buildXml(string s) {
XmlDocument d = new XmlDocument();
d.AppendChild(d.CreateElement(s));
StringWriter sw = new StringWriter();
XmlTextWriter xw = new XmlTextWriter(sw);
d.WriteTo(xw);
return sw.ToString();
}
buildXml("Test"); //This will return <Test />
Es un poco feo pero creará el XML sin tener que hacer ningún trabajo de cadena por su cuenta;)
Puede agregar esto en una captura de prueba en su método, por lo que si no logra cargarlo como un XML directamente, pasa la cadena a esto y luego intenta cargarla.
Otros consejos
¿Has probado el aparentemente obvio? <FICTION/>
o <FICTION></FICTION>
?