See this thread for one suggestion:
http://www.gossamer-threads.com/lists/lucene/java-user/55465
Mike
"Liaqat Ali" <[EMAIL PROTECTED]> wrote:
> Hi
>
> I am trying to run a code from Lucene In Action, but it generate some
> errors.There is one one warning at compilation time and the errors
> generate at run time. Given below the code and errors. Kindly give me
> some clue. thanks...
>
> *_Code:_*
>
> ///package lia.handlingtypes.xml;
> import lia.handlingtypes.framework.DocumentHandler;
> import lia.handlingtypes.framework.DocumentHandlerException;
> import org.xml.sax.helpers.DefaultHandler;
> import org.xml.sax.SAXException;
> import org.xml.sax.Attributes;
> import javax.xml.parsers.SAXParser;
> import javax.xml.parsers.SAXParserFactory;
> import javax.xml.parsers.ParserConfigurationException;
> import org.apache.lucene.document.Document;
> import org.apache.lucene.document.Field;
> import java.io.File;
> import java.io.IOException;
> import java.io.InputStream;
> import java.io.FileInputStream;
> import java.util.Iterator;
> import java.util.HashMap;
>
> public class SAXXMLHandler
> extends DefaultHandler implements DocumentHandler {
>
> /** A buffer for each XML element */
> private StringBuffer elementBuffer = new StringBuffer();
> private HashMap attributeMap;
>
> private Document doc;
>
> public Document getDocument(InputStream is)
> throws DocumentHandlerException {
>
> SAXParserFactory spf = SAXParserFactory.newInstance();
> try {
> SAXParser parser = spf.newSAXParser();
> parser.parse(is, this);
> }
> catch (IOException e) {
> throw new DocumentHandlerException(
> "Cannot parse XML document", e);
> }
> catch (ParserConfigurationException e) {
> throw new DocumentHandlerException(
> "Cannot parse XML document", e);
> }
> catch (SAXException e) {
> throw new DocumentHandlerException(
> "Cannot parse XML document", e);
> }
>
> return doc;
> }
>
> public void startDocument() {
> doc = new Document();
> }
>
> public void startElement(String uri, String localName,
> String qName, Attributes atts)
> throws SAXException {
>
> elementBuffer.setLength(0);
> attributeMap.clear();
> if (atts.getLength() > 0) {
> attributeMap = new HashMap();
> for (int i = 0; i < atts.getLength(); i++) {
> attributeMap.put(atts.getQName(i), atts.getValue(i));
> }
> }
> }
>
> public void characters(char[] text, int start, int length) {
> elementBuffer.append(text, start, length);
> }
>
> public void endElement(String uri, String localName, String qName)
> throws SAXException {
> if (qName.equals("address-book")) {
> return;
> }
> else if (qName.equals("contact")) {
> Iterator iter = attributeMap.keySet().iterator();
> while (iter.hasNext()) {
> String attName = (String) iter.next();
> String attValue = (String) attributeMap.get(attName);
> doc.add(new Field(attName,
> attValue,Field.Store.YES,Field.Index.TOKENIZED));
> }
> }
> else {
> doc.add(new Field(qName,
> elementBuffer.toString(),Field.Store.YES,Field.Index.TOKENIZED));
> }
> }
>
> public static void main(String args[]) throws Exception {
> SAXXMLHandler handler = new SAXXMLHandler();
>
> //File file = new File ("d:\\addressbook.xml");
>
> Document doc = handler.getDocument(new FileInputStream(new
> File(args[0])));
>
> //Document doc = handler.getDocument(new FileInputStream(file));
>
> System.out.println(doc);
> }
> }
> /
>
> _*Errors:
>
> *_/D:\>java SAXXMLHandler d:\addressbook.xml
>
> Exception in thread "main" java.lang.NullPointerException
> at SAXXMLHandler.startElement(SAXXMLHandler.java:66)
> at
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startEle
> ment(Unknown Source)
> at
> com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElem
> ent(Unknown Source)
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
> l.scanStartElement(Unknown Source)
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$Conten
> tDriver.scanRootElementHook(Unknown Source)
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
> l$FragmentContentDriver.next(Unknown Source)
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$Prolog
> Driver.next(Unknown Source)
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(U
> nknown Source)
> at
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImp
> l.scanDocument(Unknown Source)
> at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U
> nknown Source)
> at
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(U
> nknown Source)
> at
> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown So
> urce)
> at
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Un
> known Source)
> at
> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.p
> arse(Unknown Source)
> at javax.xml.parsers.SAXParser.parse(Unknown Source)
> at javax.xml.parsers.SAXParser.parse(Unknown Source)
> at SAXXMLHandler.getDocument(SAXXMLHandler.java:39)
> at SAXXMLHandler.main(SAXXMLHandler.java:102)
> /_*
> *_
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]