[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