O que acham do seguinte código:
package br.com.yahoo.renato3110.xmlvomiter.demo;
import java.util.*;
import br.com.yahoo.renato3110.xmlvomiter.*;
public class VomitDemo {
class Evangelion implements Vomitable {
public String name;
public String type;
public String pilot;
public Evangelion (String name, String type, String pilot) {
this.name = name;
this.type = type;
this.pilot = pilot;
}
public String getAsXML(XMLFormatter f){
StringBuffer sb = new StringBuffer();
sb.append(f.formatAs("type", type)).append("\n");
sb.append(f.formatAs("pilot", pilot));
f.addAttribute("name", name);
f.setIndent(true);
return f.formatAs("evangelion", sb.toString());
}
}
public VomitDemo() {
List l = new LinkedList();
l.add(new Evangelion("Eva-00", "Prototype", "Rei Ayanami"));
l.add(new Evangelion("Eva-02", "Production", "Asuka Langley Soryu"));
l.add(new Evangelion("Eva-03", "S2 Engine", "Touji Suzuhara"));
l.add(new Evangelion("Eva-04", "S2 Engine", "Kaworu?"));
l.add(new Evangelion("Eva-05", "Mass Production", "Dummy Plug"));
l.add(new Evangelion("Eva-06", "Mass Production", "Dummy Plug"));
l.add(new Evangelion("Eva-07", "Mass Production", "Dummy Plug"));
l.add(new Evangelion("Eva-08", "Mass Production", "Dummy Plug"));
l.add(new Evangelion("Eva-09", "Mass Production", "Dummy Plug"));
l.add(new Evangelion("Eva-10", "Mass Production", "Dummy Plug"));
l.add(new Evangelion("Eva-11", "Mass Production", "Dummy Plug"));
l.add(new Evangelion("Eva-12", "Mass Production", "Dummy Plug"));
l.add(new Evangelion("Eva-13", "Mass Production", "Dummy Plug"));
XMLFormatter f = new XMLFormatter();
f.setIndent(true);
f.addCData("Neon Genesis Evangelion\nGod is in his sky. It'a all right with the world.");
f.addComment("Zankoku na tenshi no teeze\nShounen yo shinwa ni nare");
f.addElement("evangelions", "default-evangelion", l);
f.addDeclaration("<?xml version=\"1.0\"?>");
f.addDeclaration("<!--Evangelions como XML:-->");
System.out.println(f.formatAs("evangelion-world"));
// No caso abaixo não precisamos definir um elemento pai de evangelions, mas o conteúdo
// adicionado por addCData ficaria fora do elemento raiz o que invalida um XML
// System.out.println(f.getDeclarations() + "\n" + f.getContent());
}
public static void main(String[] args) {
new VomitDemo();
}
}
Que gerou a seguinte saída:
<?xml version="1.0"?>
<!--Evangelions como XML:-->
<evangelion-world>
<![CDATA[
Neon Genesis Evangelion
God is in his sky. It'a all right with the world.
]]>
<!--
Zankoku na tenshi no teeze
Shounen yo shinwa ni nare
-->
<evangelions>
<evangelion name="Eva-00">
<type>Prototype</type>
<pilot>Rei Ayanami</pilot>
</evangelion>
<evangelion name="Eva-02">
<type>Production</type>
<pilot>Asuka Langley Soryu</pilot>
</evangelion>
<evangelion name="Eva-03">
<type>S2 Engine</type>
<pilot>Touji Suzuhara</pilot>
</evangelion>
<evangelion name="Eva-04">
<type>S2 Engine</type>
<pilot>Kaworu?</pilot>
</evangelion>
<evangelion name="Eva-05">
<type>Mass Production</type>
<pilot>Dummy Plug</pilot>
</evangelion>
<evangelion name="Eva-06">
<type>Mass Production</type>
<pilot>Dummy Plug</pilot>
</evangelion>
<evangelion name="Eva-07">
<type>Mass Production</type>
<pilot>Dummy Plug</pilot>
</evangelion>
<evangelion name="Eva-08">
<type>Mass Production</type>
<pilot>Dummy Plug</pilot>
</evangelion>
<evangelion name="Eva-09">
<type>Mass Production</type>
<pilot>Dummy Plug</pilot>
</evangelion>
<evangelion name="Eva-10">
<type>Mass Production</type>
<pilot>Dummy Plug</pilot>
</evangelion>
<evangelion name="Eva-11">
<type>Mass Production</type>
<pilot>Dummy Plug</pilot>
</evangelion>
<evangelion name="Eva-12">
<type>Mass Production</type>
<pilot>Dummy Plug</pilot>
</evangelion>
<evangelion name="Eva-13">
<type>Mass Production</type>
<pilot>Dummy Plug</pilot>
</evangelion>
</evangelions>
</evangelion-world>
Dífícil? Fácil? Horrível? Legalzinho? Este tópico é horrível?
