1 package jp.naist.se.stigmata.format.xml;
\r
7 import java.io.PrintWriter;
\r
8 import java.util.Iterator;
\r
10 import jp.naist.se.stigmata.Birthmark;
\r
11 import jp.naist.se.stigmata.BirthmarkElement;
\r
12 import jp.naist.se.stigmata.BirthmarkSet;
\r
13 import jp.naist.se.stigmata.ExtractionResultSet;
\r
14 import jp.naist.se.stigmata.ExtractionTarget;
\r
15 import jp.naist.se.stigmata.format.AbstractBirthmarkExtractionResultFormat;
\r
21 * @author Haruaki TAMADA
\r
22 * @version $Revision$ $Date$
\r
24 public class BirthmarkExtractionListXmlFormat extends AbstractBirthmarkExtractionResultFormat{
\r
25 public void printResult(PrintWriter out, ExtractionResultSet ers){
\r
26 out.println("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
\r
27 out.println("<birthmark>");
\r
28 out.println(" <extracted-birthmarks>");
\r
29 for(Iterator<BirthmarkSet> i = ers.birthmarkSets(ExtractionTarget.TARGET_BOTH); i.hasNext(); ){
\r
30 printBirthmarkSet(out, i.next());
\r
32 out.println(" </extracted-birthmarks>");
\r
33 out.println("</birthmark>");
\r
37 protected void printBirthmarkSet(PrintWriter out, BirthmarkSet set){
\r
38 out.println(" <extracted-birthmark>");
\r
39 out.printf(" <class-name>%s</class-name>%n", escapeToXmlString(set.getName()));
\r
40 out.printf(" <location>%s</location>%n", escapeToXmlString(set.getLocation()));
\r
41 for(Iterator<String> i = set.birthmarkTypes(); i.hasNext(); ){
\r
42 String type = i.next();
\r
43 Birthmark birthmark = set.getBirthmark(type);
\r
44 out.printf(" <birthmark type=\"%s\" count=\"%d\">%n",
\r
45 birthmark.getType(), birthmark.getElementCount());
\r
46 for(Iterator<BirthmarkElement> elements = birthmark.iterator(); elements.hasNext(); ){
\r
47 out.printf(" <element>%s</element>%n",
\r
48 escapeToXmlString(String.valueOf(elements.next())));
\r
50 out.println(" </birthmark>");
\r
52 out.println(" </extracted-birthmark>");
\r
55 public String escapeToXmlString(Object o){
\r
57 return escapeToXmlString(o.toString());
\r
62 public String escapeToXmlString(String string){
\r
63 string = string.replaceAll("&", "&");
\r
64 string = string.replaceAll("\"", """);
\r
65 string = string.replaceAll("<", "<");
\r
66 string = string.replaceAll(">", ">");
\r