Java Mailing List Archive

http://www.junlu.com/

Home » Home (12/2007) » JDOM User »

[jdom-interest] DTD parser

J. Albers

2004-02-03

Replies:

Hey all,

Is there a DTD parser in JDOM, and if so, does someone have an example of
some code how a DTD is written to a JTree? Right now i'm using another class
for the DTD and it writes to the console, but i have very much trouble
getting it right in a JTree. I'll show u some of the code.


Thanks, Joachim.

protected static void printElementTree(DTD dtd, DTDElement element,
String pad, Stack stack)
{
    if (stack.contains(element.name))
    {
 System.out.println(pad+" -- "+element.name);
 //Main.elements2.add(new DefaultMutableTreeNode(element.name));
       return;
    }

    stack.push(element.name);

if (!(element.content instanceof DTDContainer))
{
 System.out.println(pad+" -- "+element.name);
}
else
{
 DTDItem[] items = ((DTDContainer) element.content).getItems();

 Vector elems = new Vector();

 for (int i=0; i < items.length; i++)
 {
          if (items[i] instanceof DTDContainer)
          {
            expandContainer((DTDContainer) items[i], elems, dtd);
            continue;
          }
          else if (!(items[i] instanceof DTDName))
          {
            continue;
          }

  DTDElement currElem = (DTDElement) dtd.elements.get(
  ((DTDName) items[i]).value);
  //Main.elements2.add(new DefaultMutableTreeNode(currElem.name));

  if (currElem == null) continue;

  elems.addElement(currElem);
 }

 if (elems.size() == 0)
 {
  System.out.println(pad);
//           stack.pop();
  return;
 }

 String pipePad = makePipePad(pad);
 //DefaultMutableTreeNode node = new DefaultMutableTreeNode(null);
 for (int i=0; i < elems.size(); i++)//moet elementen omdraaien.(nog
loepje maken)
 {
  DTDElement currElem = (DTDElement) elems.elementAt(i);

  if (i == 0)
  {//alleen alsals eerste(of enige)
  printElementTree(dtd, currElem, pad+" -- "+currElem.name, stack);
  }
  else if (i < elems.size()-1)
  {//als niet de laatste en niet de eerste
  printElementTree(dtd, currElem, pipePad+" |- "+currElem.name, stack);
  }
  else
  {//alleen de laatste
  printElementTree(dtd, currElem, pipePad+" +- "+currElem.name, stack);
  }
  //Main.elements2.add(node);
 }

}
//     stack.pop();
}

_______________________________________________
To control your jdom-interest membership:
http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@(protected)


©2008 junlu.com - Jax Systems, LLC, U.S.A.