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

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top