java/parameter-lister/src/info/glogalcode/parameterLister/modules/XmlModule.java
author František Kučera <franta-hg@frantovo.cz>
Sat, 10 Sep 2016 23:22:29 +0200
changeset 23 4ad40aaed4bb
parent 22 91e52083f255
child 28 bfef9f34e438
permissions -rw-r--r--
java: simple XML output module
     1 package info.glogalcode.parameterLister.modules;
     2 
     3 import info.glogalcode.parameterLister.OutputModule;
     4 import info.glogalcode.parameterLister.OutputModuleException;
     5 import java.io.OutputStream;
     6 import java.io.PrintWriter;
     7 import java.util.List;
     8 
     9 /**
    10  * Just a simple XML output.
    11  * For more complex documents, use {@linkplain javax.xml.stream.XMLStreamWriter}
    12  *
    13  * @author Ing. František Kučera (frantovo.cz)
    14  */
    15 public class XmlModule implements OutputModule {
    16 
    17 	@Override
    18 	public void process(OutputStream output, List<String> parameters) throws OutputModuleException {
    19 		try (PrintWriter out = new PrintWriter(output)) {
    20 			out.println("<parameters>");
    21 			for (String parameter : parameters) {
    22 				out.print("\t<parameter>");
    23 				out.print(escapeXmlText(parameter));
    24 				out.println("</parameter>");
    25 				out.flush();
    26 			}
    27 			out.println("</parameters>");
    28 		}
    29 	}
    30 
    31 	/**
    32 	 * @param s original text
    33 	 * @return escaped text that can be safely concatenated between two XML tags (not safe for
    34 	 * attribute
    35 	 * values)
    36 	 */
    37 	private static String escapeXmlText(String s) {
    38 		return s.replaceAll("&", "&amp;").replaceAll("<", "&lt;").replaceAll(">", "&gt;");
    39 	}
    40 }