[jdom-interest] How to find out the line number in the XML document instance

Jason Hunter jhunter at servlets.com
Mon Apr 15 00:27:10 PDT 2002


How much memory are you willing to devote to this feature?  It's not the
implementation difficulty that's keeping us from adding line number
records, it's the memory requirement.

-jh-

Olle Hallin wrote:
> 
> Thanks Laurent,
> 
> It does not seem to be that hard to implement :)
> 
> To the JDOM developers: wouldn't this be a Good Thing to have built-in in JDOM?
> 
> Regards,
> Olle
> 
> ----- Original Message -----
> From: "Laurent Bihanic" <laurent.bihanic at atosorigin.com>
> To: "Olle Hallin" <olle.hallin at hit.se>
> Cc: <jdom-interest at jdom.org>
> Sent: Friday, April 12, 2002 1:48 PM
> Subject: Re: [jdom-interest] How to find out the line number in the XML document instance
> 
> >
> > Hi Olle,
> >
> > JDOM does not currently store the line number information. But there are some
> > plugs that should allow you to access it.
> >
> > First you'll need too write your own subclass of the JDOM node classes
> > (Element, Comment PI, etc.) for which you wish to keep the line number
> > information. To allow SAXBuilder to allocate instances of these classes,
> > you'll need to subclass DefaultJDOMFactory to get the line number information
> > and store it in your node instances.
> >
> > How does the factory access the line number information? It can use the
> > getDocumentLocator method provided by SAXHandler. But... to access the
> > SAXHandler instance you'll need to create your own subclass of SAXBuilder.
> >
> > It's not as complicated as it seems:
> >
> > public class MyBuilder extends SAXBuilder {
> >    // Copy constructors here...
> >    ...
> >
> >    protected void configureContentHandler(SAXHandler contentHandler) {
> >       super.configureContentHandler(contentHandler);
> >       ((MyFactory)factory).setSAXHandler(contentHandler);
> > }
> >
> > public class MyFactory extends DefaultJDOMFactory {
> >    private SAXHandler saxHandler;
> >
> >    ...
> >
> >    public void setSAXHandler(SAXHandler sh) {
> >       this.saxHandler = sh;
> >    }
> >
> >    public Element element(String name) {
> >       this.element(name, (Namespace) null);
> >    }
> >
> >    public Element element(String name, Namespace namespace) {
> >       MyElement e = new MyElement(name, namespace);
> >
> >       org.xml.sax.Locator loc = this.saxHandler.getDocumentLocator()
> >       e.setLineNumber(loc.getLineNumber();
> >    }
> > }
> >
> > Hope this helps,
> >
> > Laurent
> >
> >
> > Olle Hallin wrote:
> > > Hi all JDOM gurus!
> > >
> > > I am writing a product configurator driven by an XML document that defines all products and their components.
> > >
> > > In order to keep it simple, the plan is to let the product managers maintain this file directly by means of XML Spy assisted by an XML Schema.
> > > Many errors will be trapped by the schema, but not all.
> > >
> > > My question now is how to find the line number in the original XML document instance that corresponds to a certain JDOM Element?
> > > I want to give as exakt error messages as possible should I detect an error in an XML instance that has passed the schema validation.
> > >
> > >  I use Xerces-J 2.0.0 as parser.
> > >
> > > Regards,
> > > Olle Hallin
> > >
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > To control your jdom-interest membership:
> > > http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhost.com
> > >
> >
> >
> > --
> >                   wWw    Zzzzz
> >                  (- -)
> > -------------ooO-(_)-Ooo-----------------------------------------------
> > Laurent Bihanic           | Tel: +33 (0)1 55.91.21.93  (Direct line)
> > Atos Origin               |      +33 (0)1 55.91.20.00
> > Intégration - e-Business  | Fax: +33 (0)1 55.91.22.31
> > Les Miroirs - Bat. C      |
> > 18, avenue d'Alsace       |
> > F-92926 La Defense Cedex  | e-Mail: laurent.bihanic at atosorigin.com
> > -----------------------------------------------------------------------
> >
> > "Microsoft isn't the answer. Microsoft is the question and the answer
> >   is no."
> >
> >
> > DISCLAIMER:
> > The opinions expressed are entirely my own and may not necessarily be
> > those of my employer.  Also, I am not now nor have I ever been a
> > lawyer.  My opinions are provided as-is with absolutely no warrantee of
> > merchantability or fitness for any particular use.  Besides, you can't
> > prove I typed this.  No body saw me type this.  Who says I typed this?
> >
> >
> 
> _______________________________________________
> To control your jdom-interest membership:
> http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhost.com



More information about the jdom-interest mailing list