Io ho un programma che per ora mi memorizza in 2 classi degli oggetti (Stile, Body)

Per ora ho fatto il parser dom...

Io alla fine devo confrontare alcune stringhe della classe Body con quelle della classe Stile.
E devo fare dei controlli es. il testo deve essere in Times New Romans e di carattere 12 e 13.
Se è tutto a posto devo generare un qualcosa (non so se sia megli un file.html o qualcos'altro) che mi dice che il file in questione rispetta tutti i vincoli.
Se invece non li rispetta dico. il file non rispetta questo o quel vincolo...

Se avete capito più o meno cosa intendo, ora che ho fatto il parser e prima di passare al confronto delle stringhe dovrei rendere il programma eseguibile da internet tramite una applet o una servlet....

Io non so quale delle 2 soluzioni sia la migliore, potete darmi una mano nella scelta e anche spiegarmi come fare a modificare il mio programma?
Questo è per ora il mio programma:
codice:
import java.io.*;
import java.util.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;

public class ParserDom {
  Vector styleNodes = new Vector();

  Vector styleObjects = new Vector();

  Vector bodyNodes = new Vector();

  Vector bodyObjects = new Vector();

  public ParserDom() {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = null;
    try {
      builder = factory.newDocumentBuilder();
    }
    catch (ParserConfigurationException e) {
      e.printStackTrace();
      System.exit(1);
    }
    Document document = null;
    try {

      PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("Giovedì 17.txt", false)));
      document = builder.parse(new File("C:\\Documents and settings\\Administrator\\Desktop\\DAVIDE\\tesi.xml"));
      findStyleNodes(document);
      createStyleObjects();
      printStyles(pw);
      findBodyNodes(document);
      createBodyObjects();
      printBody(pw);
      pw.close();
    }
    catch (Exception e) {
      e.printStackTrace();
      System.exit(1);
    }
  }

  private void findStyleNodes(Node startingNode) {
    NodeList childNodes = startingNode.getChildNodes();
    for ( int i = 0; i < childNodes.getLength(); i++) {
      Node actualNode = childNodes.item(i);
      if ( isStyleNode(actualNode) )
        styleNodes.addElement(actualNode);
      if ( actualNode.hasChildNodes() )
        findStyleNodes(actualNode);
    }
  }

  private boolean isStyleNode(Node node) {
    return node.getNodeName().equals("w:style");
  }

  private void createStyleObjects() {
    for ( int i = 0; i < styleNodes.size(); i++) {
      Node styleNode = (Node)styleNodes.elementAt(i);
      Style style = new Style();
      style.name = getAttributeValue(styleNode, "w:styleId");
      Node basedNode = getChildNode(styleNode, "w:basedOn");
      if ( basedNode != null )
        style.based = getAttributeValue(basedNode, "w:val");
      Node pPrNode = getChildNode(styleNode, "w:pPr");
      if ( pPrNode != null ) {
        Node pstileNode = getChildNode(pPrNode, "w:pStyle");
        if ( pstileNode != null )
          style.pstile = getAttributeValue(pstileNode, "w:val");
        Node jcNode = getChildNode(pPrNode, "w:jc");
        if ( jcNode != null )
          style.jc = getAttributeValue(jcNode, "w:val");
      }
      Node paragraphNode = getChildNode(styleNode, "w:rPr");
      if ( paragraphNode != null ) {
        Node fontNode = getChildNode(paragraphNode, "wx:font");
        if ( fontNode != null )
          style.font = getAttributeValue(fontNode, "wx:val");
        else {
          Node rfontNode = getChildNode(paragraphNode, "w:rFonts");
          if ( rfontNode != null )
            style.font = getAttributeValue(rfontNode, "w:cs");
        }
        Node sizeNode = getChildNode(paragraphNode, "w:sz");
        if ( sizeNode != null )
          style.size = getAttributeValue(sizeNode, "w:val");
        Node grassettoNode = getChildNode(paragraphNode, "w:b");
        if ( grassettoNode != null )
          style.grassetto = getAttributeValue(grassettoNode, "w:val");
        Node italicoNode = getChildNode(paragraphNode, "w:i");
        if ( italicoNode != null )
          style.italico = getAttributeValue(italicoNode, "w:val");
        Node sottolineatoNode = getChildNode(paragraphNode, "w:u");
        if ( sottolineatoNode != null )
          style.sottolineato = getAttributeValue(sottolineatoNode, "w:val");
      }
      styleObjects.addElement(style);
    }
  }

  private String getAttributeValue(Node node, String attributeName) {
    NamedNodeMap attributes = node.getAttributes();
    if ( attributes == null )
      return "";
    Node item = attributes.getNamedItem(attributeName);
    if ( item == null )
      return "";
    return item.getNodeValue();
  }

  private Node getChildNode(Node node, String nodeName) {
    NodeList childNodes = node.getChildNodes();
    for ( int i = 0; i < childNodes.getLength(); i++) {
      Node childNode = childNodes.item(i);
      if ( childNode.getNodeName().equals(nodeName) )
        return childNode;
    }
    return null;
  }

  private void printStyles(PrintWriter pw) {
    for ( int i = 0; i < styleObjects.size(); i++) {
      Style style = (Style)styleObjects.elementAt(i);
      System.out.println(style);
      pw.println(style);
    }
  }

  public static void main(String args[]) {
    new ParserDom();
  }

  class Style  {
    String name;

    String based;

    String pstile;

    String jc;

    String font;

    String size;

    String grassetto;

    String italico;

    String sottolineato;

    public String toString() {
      StringBuffer buffer = new StringBuffer();
      if ( name != null ) {
        buffer.append("Stile: " + name + "\n");
        if ( based != null )
          buffer.append(" Basato su: " + based + "\n");
        if ( pstile != null )
          buffer.append(" pStyle: " + pstile + "\n");
        if ( jc != null )
          buffer.append(" Jc: " + jc + "\n");
        if ( font != null )
          buffer.append(" Font: " + font + "\n");
        if ( size != null )
          buffer.append(" Dimensione: " + size + "\n");
        if ( grassetto != null )
          buffer.append(" Grassetto " + grassetto + "\n");
        if ( italico != null )
          buffer.append(" Italico " + italico + "\n");
        if ( sottolineato != null )
          buffer.append(" Sottolineato: " + sottolineato + "\n");
      }
      return buffer.toString();
    }
  }

  private void findBodyNodes(Node startingNode) {
    NodeList childNodes = startingNode.getChildNodes();
    for ( int i = 0; i < childNodes.getLength(); i++) {
      Node actualNode = childNodes.item(i);
      if ( isBodyNode(actualNode) )
        bodyNodes.addElement(actualNode);
      if ( actualNode.hasChildNodes() )
        findBodyNodes(actualNode);
    }
  }

  private boolean isBodyNode(Node node) {
    return node.getNodeName().equals("w:p");
  }

  private void createBodyObjects() {
    String stile = new String();
    String jc = new String();
    for ( int i = 0; i < bodyNodes.size(); i++) {
      Node bodyNode = (Node)bodyNodes.elementAt(i);
      stile = null;
      jc = null;
      Node paragraphNode = getChildNode(bodyNode, "w:pPr");
      if ( paragraphNode != null ) {
        Node stileNode = getChildNode(paragraphNode, "w:pStyle");
        if ( stileNode != null )
          stile = getAttributeValue(stileNode, "w:val");
        Node jcNode = getChildNode(paragraphNode, "w:jc");
        if ( jcNode != null )
          jc = getAttributeValue(jcNode, "w:val");
      }
      NodeList pNode = getAllChildNode(bodyNode, "w:r");
      for ( int j = 0; j < pNode.getLength(); j++) {
        Body body = new Body();
        body.stile = stile;
        body.jc = jc;
        Node rNode = (Node)pNode.item(j);
        Node rPrNode = getChildNode(rNode, "w:rPr");
        if ( rPrNode != null ) {
          Node rstileNode = getChildNode(rPrNode, "w:rStyle");
          if ( rstileNode != null )
            body.stile = getAttributeValue(rstileNode, "w:val");
          Node grassettoNode = getChildNode(rPrNode, "w:b");
          if ( grassettoNode != null )
            body.grassetto = getAttributeValue(grassettoNode, "w:val");
          Node italicoNode = getChildNode(rPrNode, "w:i");
          if ( italicoNode != null )
            body.italico = getAttributeValue(italicoNode, "w:val");
          Node sottolineatoNode = getChildNode(rPrNode, "w:u");
          if ( sottolineatoNode != null )
            body.sottolineato = getAttributeValue(sottolineatoNode, "w:val");
          Node sizeNode = getChildNode(rPrNode, "w:sz");
          if ( sizeNode != null )
            body.size = getAttributeValue(sizeNode, "w:val");
        }
        Node pictNode = getChildNode(rNode, "w:pict");
        if ( pictNode != null ) {
          Node shapeNode = getChildNode(pictNode, "v:shape");
          if ( shapeNode != null ) {
            Node imagedataNode = getChildNode(shapeNode, "v:imagedata");
            if ( imagedataNode != null ) {
              body.titolopict = getAttributeValue(imagedataNode, "o:title");
              body.formatopict = getAttributeValue(imagedataNode, "src");
            }
          }
        }
        Node wtNode = getChildNode(rNode, "w:t");
        if ( wtNode != null ) {
          Node testoNode = getChildNode(wtNode, "#text");
          if ( testoNode != null )
            body.testo = testoNode.getNodeValue();
        }
        bodyObjects.addElement(body);
      }
    }
  }

  private void printBody(PrintWriter pw) {
    for ( int i = 0; i < bodyObjects.size(); i++) {
      Body body = (Body)bodyObjects.elementAt(i);
      System.out.println(body);
      pw.println(body);
    }
  }

  class Body  {
    String stile;

    String jc;

    String rstile;

    String grassetto;

    String italico;

    String sottolineato;

    String size;

    String testo;

    String titolopict;

    String formatopict;

    public String toString() {
      StringBuffer buffer = new StringBuffer();
      if ( stile != null )
        buffer.append("Stile body: " + stile + "\n");
      if ( jc != null )
        buffer.append(" Jc body: " + jc + "\n");
      if ( rstile != null )
        buffer.append(" Rstile body " + rstile + "\n");
      if ( grassetto != null )
        buffer.append(" Grassetto body " + grassetto + "\n");
      if ( italico != null )
        buffer.append(" Italico body " + italico + "\n");
      if ( sottolineato != null )
        buffer.append(" Sottolineato body: " + sottolineato + "\n");
      if ( size != null )
        buffer.append(" Dimensione body: " + size + "\n");
      if ( testo != null )
        buffer.append(" Testo body: " + testo + "\n");
      if ( titolopict != null )
        buffer.append(" Nome immagine body: " + titolopict + "\n");
      if ( formatopict != null )
        buffer.append(" Formato immagine body: " + formatopict + "\n");
      return buffer.toString();
    }
  }

  private NodeList getAllChildNode(Node node, String nodeName) {
    ArrayNodeList arrNodeList = new ArrayNodeList();
    NodeList childNodes = node.getChildNodes();
    for ( int i = 0; i < childNodes.getLength(); i++) {
      Node childNode = childNodes.item(i);
      if ( childNode.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE && childNode.getNodeName().equals(nodeName) ) {
        arrNodeList.add(childNode);
      }
    }
    return arrNodeList;
  }

  class ArrayNodeList implements NodeList {
    private ArrayList nodesArray = new ArrayList();

    public void add(Node n) {
      nodesArray.add(n);
    }

    public int getLength() {
      return nodesArray.size();
    }

    public Node item(int index) {
      try {
        return (Node)nodesArray.get(index);
      }
      catch (IndexOutOfBoundsException e) {
        return null;
      }
    }
  }
}