Cuando leemos un archivo XML e intentamos escribir en otro archivo XML, es importante que cuidemos los caracteres especiales en el XML. Hay algunos caracteres reservados en Java que deben transformarse o escaparse para que se consideren una string literal. Si no evitamos estos caracteres especiales, los analizadores como los analizadores DOM o SAX en Java los considerarían como etiquetas XML específicamente en el caso de < y >. Incluso si usamos la transformación XSLT, estos analizadores fallarían. Por lo tanto, necesitamos escapar o transformar estos caracteres especiales antes de leerlos como un literal de string en Java.
Caracteres especiales en XML
Hay 5 caracteres especiales que se usan principalmente en XML que deben escaparse cuando se usan como una string Java
- & – &erio;
- <-<
- > — >
- ” — «
- ‘ – ‘
Estos caracteres especiales también se conocen como metacaracteres XML. Mediante el proceso de escape, estaríamos reemplazando estos caracteres con strings alternativas para dar el resultado literal de caracteres especiales.
Ejemplo:
<GeeksForGeeks> Data Structures & Java </GeeksForGeeks> // is an invalid string in java because '&' is a reserved literal // in XML that is used to import other XML entity. For converting this // to a valid String literal we need to & instead of & here. <GeeksForGeeks> Data Structure & Java </GeeksForGeeks> // now becomes a valid String.
En Java, siempre podemos escribir nuestras propias funciones para escapar de los caracteres especiales XML con sus literales de string equivalentes, pero también podemos usar la biblioteca de Java «StringEscapeUtils» proporcionada por Apache Commons. Esta biblioteca nos proporciona una API común que hace que el XML se escape por nosotros.
Código:
Java
// Java program to escape all the five characters // mentioned above using the StringEscapeUtils class import java.io.*; import org.apache.commons.lang.StringEscapeUtils; class GeeksForGeeks { public static void main (String[] args) { System.out.println("Program to escape XML Special Characters !!"); // Escape & character in XML String String unescapedXMLString = "DataStructures & Java"; System.out.println("Unescaped String: " + unescapedXMLString); // using StringEscapeUtils System.out.println("Escaped String: " + StringEscapeUtils.escapeXml(unescapedXMLString)); // Escape > character in XML String unescapedXMLString = "DataStructures > Java"; System.out.println("Unescaped String: " + unescapedXMLString); // using StringEscapeUtils System.out.println("Escaped String: " + StringEscapeUtils.escapeXml(unescapedXMLString)); // Escape < character in XML String unescapedXMLString = "DataStructures < Java"; System.out.println("Unescaped String: " + unescapedXMLString); // using StringEscapeUtils System.out.println("Escaped String: " + StringEscapeUtils.escapeXml(unescapedXMLString)); // Escape " character in XML String unescapedXMLString = "DataStructures \" Java"; System.out.println("Unescaped String: " + unescapedXMLString); // using StringEscapeUtils System.out.println("Escaped String: " + StringEscapeUtils.escapeXml(unescapedXMLString)); // Escape ' character in XML String unescapedXMLString = "DataStructures ' Java"; System.out.println("Unescaped String: " + unescapedXMLString); // using StringEscapeUtils System.out.println("Escaped String: " + StringEscapeUtils.escapeXml(unescapedXMLString)); } }
Producción:
Program to escape XML Special Characters !! Unescaped String: DataStructures & Java Escaped String: DataStructures & Java Unescaped String: DataStructures > Java Escaped String: DataStructures > Java Unescaped String: DataStructures < Java Escaped String: DataStructures < Java Unescaped String: DataStructures " Java Escaped String: DataStructures " Java Unescaped String: DataStructures ' Java Escaped String: DataStructures ' Java
Publicación traducida automáticamente
Artículo escrito por vijayalakshmivenkataraman y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA