package com.levelup.java.xml;
import static org.junit.Assert.assertEquals;
import org.apache.commons.lang3.StringEscapeUtils;
import org.junit.Test;
import com.google.common.xml.XmlEscapers;
/**
* This java example will demonstrate escaping XML attributes.
*
* @author Justin Musgrove
* @see <a href='http://www.leveluplunch.com/java/examples/escape-xml-characters/'>Escape XML characters</a>
*
*/
public class EscapeXMLAttributes {
private static final String XML_TO_ESCAPE = "<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>";
private static final String ESCAPED_XML = "<note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don't forget me this weekend!</body></note>";
@Test
public void escape_xml_with_straight_java () {
StringBuilder escapedXML = new StringBuilder();
for (int i = 0; i < XML_TO_ESCAPE.length(); i++) {
char c = XML_TO_ESCAPE.charAt(i);
switch (c) {
case '<':
escapedXML.append("<");
break;
case '>':
escapedXML.append(">");
break;
case '\"':
escapedXML.append(""");
break;
case '&':
escapedXML.append("&");
break;
case '\'':
escapedXML.append("'");
break;
default:
if (c > 0x7e) {
escapedXML.append("" + ((int) c) + ";");
} else
escapedXML.append(c);
}
}
assertEquals(ESCAPED_XML, escapedXML.toString());
}
@Test
public void escape_xml_with_google_guava () {
String escapedXML = XmlEscapers.xmlAttributeEscaper().escape(XML_TO_ESCAPE);
assertEquals(ESCAPED_XML, escapedXML);
}
@Test
public void escape_xml_with_apache_commons () {
String escapedXML = StringEscapeUtils.escapeXml(XML_TO_ESCAPE);
assertEquals(ESCAPED_XML, escapedXML);
}
}