• Subject: RE: HTML to XML, vice versa
  • From: "Clapham, Paul" <pclapham@xxxxxxxxxxxxx>
  • Date: Tue, 13 Mar 2001 15:08:25 -0800

Well, first of all I would have made toXML() and toHTML() be methods of the
MyClass class, rather than of the fields inside the class.  After all, a
MyClass rendered as HTML might consist of a table with 2 rows and 3 columns,
each cell containing HTML for a field, let's say.  In other words, the HTML
for a MyClass is not just the sum of the HTMLs for its fields.

Having just gone through this, however, let me fast-forward and say that
this isn't the correct answer either.  It's the first one I came up with but
it's too simple.  You may want to render a MyClass as 2 rows of 3 columns in
some contexts, but in other contexts you might want an abbreviated rendering
that's a single line summarizing the MyClass.

This is where the decorators come in, if I'm not mistaken.  You don't want
the MyClass object to render itself in HTML or XML or any other ML.  It's
some other class that's going to be given a MyClass object and told, "Render
this appropriately".  And it's that other class that knows what "render
appropriately" means.  So what you might have (my system hasn't quite got
here yet) is this:

An interface called MyClassRenderer, with a single method whose signature is
something like "public String render(MyClass)".

Any number of classes that implement this interface -- as HTML, XML,
whatever they want.  Of course those classes can do any number of other
things, to implement MyClassRenderer they just need to provide this one
method.

For example, you might have a class called HTMLFullEsp that's designed to
provide a full rendering of everything in your system, in Spanish.  It would
provide the "render(MyClass)" method, and its code would produce HTML with
Spanish text.  And it might provide a lot of other methods designed to
render other things in your system in the same style.

Of course, all this is like explaining to a baby how to walk.  At least, it
was for me.  You've got to get up on your rear appendages and bump into a
lot of furniture -- which is what you're doing.  Eventually (after several
months) it becomes clear.

PC2

-----Original Message-----
From: Stone, Brad V (TC) [mailto:bvstone@taylorcorp.com]
Sent: March 13, 2001 11:19
To: 'JAVA400-L@midrange.com'
Subject: RE: HTML to XML, vice versa


Well, I'm starting out small and am returning a vector that contains a
class.  Here's an example...

First, I have MyClass which is really a representation of one "record" from
a file.  Each attribute represents a field:

public class MyClass extends java.lang.Object
{
  protected String status = null;
  protected String sendID = null;
  protected String sendType = null;
  protected String sendBatch = null;
  protected String receiveID = null;
}

Then I have another class that is a vector of MyClass's.  

public class MyClassList extends MyClass
{
  protected Vector myClassList = new Vector();

  public MyClassList(String sendID, String recID, String batch, int
numberToLoad)
  {

// build SQL, run statement using sendID, recID and batch as selection.
Load "numberToLoad" records into the vector //

      while ((rsControl.next()) && (count < numberToLoad))
      {
        count++;
        MyClass myClass = new MyClass();
        myClassList.status = rsControl.getString("STATUS").trim();
        myClassList.sendID = rsControl.getString("SND_ID").trim();
        myClassList.sendType = rsControl.getString("SND_TYPE").trim();
        myClassList.sendBatch = rsControl.getString("SND_BATCH").trim();
        myClassList.receiveID = rsControl.getString("REC_ID").trim();

        myClassList.addElement(myClass);
      }
    }

    public MyClass getField(int index)
    {
      return (MyClass) myClassList.get(index);
    }

  }

No that I have a "table" object (this one is simple I understand, not a
vector of vectors, but that will come later) I want to be able somewhere to
say:

MyClassList myClassList = new MyClassList(sendID, receiveID, numberToLoad)

Then I want to have a method that will convert something to xml or html
(toXML() or toHTML());

    for (int i = 0; i < myClassList.size(); i++)
    {
      myClassList.getField(i).status.toXML();
      myClassList.getField(i).sendID.toXML();
      myClassList.getField(i).sendType.toXML();
      myClassList.getField(i).sendBatch.toXML();
    }


etc.. etc...

That's why I asked if I could extend String() because I'd like to be able to
to .toXML() or toHTML() without haveingn to put it into another "object".
This probably makes no sense.  :)

Brad
+---
| This is the JAVA/400 Mailing List!
| To submit a new message, send your mail to JAVA400-L@midrange.com.
| To subscribe to this list send email to JAVA400-L-SUB@midrange.com.
| To unsubscribe from this list send email to JAVA400-L-UNSUB@midrange.com.
| Questions should be directed to the list owner: joe@zappie.net
+---

As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.