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
24 public class ExtractionResultSetXmlPrinter extends AbstractExtractionResultSetPrinter{
26 public void printResult(PrintWriter out, ExtractionResultSet ers){
29 out.printf(" <unit>%s</unit>%n", ers.getExtractionUnit());
30 out.printf(" <birthmark-types>%n");
31 for(String type: ers.getBirthmarkTypes()){
32 out.printf(" <birthmark-type>%s</birthmark-type>%n", type);
34 out.printf(" </birthmark-types>%n");
35 for(Iterator<BirthmarkSet> i = ers.birthmarkSets(ExtractionTarget.TARGET_BOTH); i.hasNext(); ){
36 printBirthmarkSet(out, i.next());
42 public void printHeader(PrintWriter out){
43 out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
44 out.println("<birthmark-result-set>");
45 out.println(" <extracted-birthmarks>");
49 public void printFooter(PrintWriter out){
50 out.println(" </extracted-birthmarks>");
51 out.println("</birthmark-result-set>");
55 public void printBirthmarkSet(PrintWriter out, BirthmarkSet set){
56 out.println(" <extracted-birthmark>");
57 out.printf(" <name>%s</name>%n", escapeToXmlString(set.getName()));
58 out.printf(" <location>%s</location>%n", escapeToXmlString(set.getLocation()));
59 for(Iterator<String> i = set.birthmarkTypes(); i.hasNext(); ){
60 String type = i.next();
61 Birthmark birthmark = set.getBirthmark(type);
62 out.printf(" <birthmark type=\"%s\" count=\"%d\">%n",
63 birthmark.getType(), birthmark.getElementCount());
64 for(Iterator<BirthmarkElement> elements = birthmark.iterator(); elements.hasNext(); ){
65 out.printf(" <element>%s</element>%n",
66 escapeToXmlString(String.valueOf(elements.next())));
68 out.println(" </birthmark>");
70 out.println(" </extracted-birthmark>");
73 public String escapeToXmlString(Object o){
75 return escapeToXmlString(o.toString());
80 public String escapeToXmlString(String string){
81 string = string.replaceAll("&", "&");
82 string = string.replaceAll("\"", """);
83 string = string.replaceAll("<", "<");
84 string = string.replaceAll(">", ">");