1 package jp.sourceforge.stigmata.printer.xml;
7 import java.io.PrintWriter;
8 import java.util.Iterator;
10 import jp.sourceforge.stigmata.Birthmark;
11 import jp.sourceforge.stigmata.BirthmarkElement;
12 import jp.sourceforge.stigmata.BirthmarkSet;
13 import jp.sourceforge.stigmata.ExtractionResultSet;
14 import jp.sourceforge.stigmata.ExtractionTarget;
15 import jp.sourceforge.stigmata.printer.AbstractExtractionResultSetPrinter;
21 * @author Haruaki TAMADA
23 public class ExtractionResultSetXmlPrinter extends AbstractExtractionResultSetPrinter{
25 public void printResult(PrintWriter out, ExtractionResultSet ers){
28 out.printf(" <unit>%s</unit>%n", ers.getExtractionUnit());
29 out.printf(" <birthmark-types>%n");
30 for(String type: ers.getBirthmarkTypes()){
31 out.printf(" <birthmark-type>%s</birthmark-type>%n", type);
33 out.printf(" </birthmark-types>%n");
34 for(Iterator<BirthmarkSet> i = ers.birthmarkSets(ExtractionTarget.TARGET_BOTH); i.hasNext(); ){
35 printBirthmarkSet(out, i.next());
41 public void printHeader(PrintWriter out){
42 out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
43 out.println("<birthmark-result-set>");
44 out.println(" <extracted-birthmarks>");
48 public void printFooter(PrintWriter out){
49 out.println(" </extracted-birthmarks>");
50 out.println("</birthmark-result-set>");
54 public void printBirthmarkSet(PrintWriter out, BirthmarkSet set){
55 out.println(" <extracted-birthmark>");
56 out.printf(" <name>%s</name>%n", escapeToXmlString(set.getName()));
57 out.printf(" <location>%s</location>%n", escapeToXmlString(set.getLocation()));
58 for(Iterator<String> i = set.birthmarkTypes(); i.hasNext(); ){
59 String type = i.next();
60 Birthmark birthmark = set.getBirthmark(type);
61 out.printf(" <birthmark type=\"%s\" count=\"%d\">%n",
62 birthmark.getType(), birthmark.getElementCount());
63 for(Iterator<BirthmarkElement> elements = birthmark.iterator(); elements.hasNext(); ){
64 out.printf(" <element>%s</element>%n",
65 escapeToXmlString(String.valueOf(elements.next())));
67 out.println(" </birthmark>");
69 out.println(" </extracted-birthmark>");
72 public String escapeToXmlString(Object o){
74 return escapeToXmlString(o.toString());
79 public String escapeToXmlString(String string){
80 string = string.replaceAll("&", "&");
81 string = string.replaceAll("\"", """);
82 string = string.replaceAll("<", "<");
83 string = string.replaceAll(">", ">");