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

Olle Hallin olle.hallin at hit.se
Sun Apr 14 23:12:16 PDT 2002


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?
> 
> 





More information about the jdom-interest mailing list