users@jaxb.java.net

Re: unmarshall an object from a org.w3c.dom.Document object

From: Ed Mooney <Ed.Mooney_at_sun.com>
Date: Tue, 06 May 2003 09:55:02 -0400

Hi Mark,

I believe David eventually was able to get it working. Please check
subsequent messages in the thread.

Regards,
--
Ed Mooney         |Sun Microsystems, Inc.|Time flies like
Java Web Services |UBUR02-201            |an arrow, but
Ed.Mooney_at_Sun.COM |1 Network Drive       |fruit flies like
781-442-0459      |Burlington, MA  01803 |a banana. Groucho
Mark D. Hansen wrote:
> Was this problem solved?  I am having the same issue.
>
> Mark Hansen
> bus: (888) 360-7285
> fax:  (914) 723-8671
> email: khookguy_at_yahoo.com
>
>
> -----Original Message-----
> From: Discussion list for the Java Architecture for XML Binding
> [mailto:JAXB-INTEREST_at_JAVA.SUN.COM]On Behalf Of David Portabella
> Sent: Tuesday, March 18, 2003 1:19 PM
> To: JAXB-INTEREST_at_JAVA.SUN.COM
> Subject: unmarshall an object from a org.w3c.dom.Document object
>
>
> I have problems unmarshalling an object from a org.w3c.dom.Document
> object.
>
> I create a simple org.w3c.dom.Document object, and then I try to
> unmarshall it, but it reports this error:
>
>
>>Exception in thread "main" java.lang.NullPointerException
>>       at
>
> com.sun.xml.bind.unmarshaller.SAXUnmarshallerHandlerImpl.startElement
>
>>(SAXUnmarshallerHandlerImpl.java:87)
>>       at
>
> com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:109)
>
>>       at
>
> com.sun.xml.bind.unmarshaller.DOMScanner.parse(DOMScanner.java:64)
>
>>       at
>
> com.sun.xml.bind.unmarshaller.UnmarshallerImpl.unmarshal(Unmarshaller
>
>>Impl.java:149)
>>       at TestB.createObject(TestB.java:39)
>>       at TestB.main(TestB.java:19)
>
>
> But, if I create the same Document object, I save it into a file,
> and I reload it from this file, having again a Document object
> (which should be the same),
> then I can unmarshall it successfully.
>
> What can be the problem?
>
>
>
> -----------------------------------------
> import org.xml.sax.*;
> import org.w3c.dom.*;
> import javax.xml.parsers.*;
> import java.io.*;
>
> import javax.xml.bind.JAXBContext;
> import javax.xml.bind.JAXBException;
> import javax.xml.bind.Unmarshaller;
> import javax.xml.bind.Marshaller;
>
>
> public class TestB
> {
>  public static void main(String[] args) throws Exception
>  {
>   Document doc = createDoc();
>   System.out.println(doc.getDocumentElement());
>   //doc = saveAndReload(doc); //If I do this strange thing, then it
> works
>   createObject(doc);
>  }
>
>  static Document createDoc() throws Exception
>  {
>   DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
>   dbf.setNamespaceAware(true);
>   DocumentBuilder db = dbf.newDocumentBuilder();
>   Document doc = db.newDocument();
>
>   Element element = doc.createElement("WozRequest");
>   element.setAttribute("action", "value");
>   doc.appendChild(element);
>   return doc;
>  }
>
>  static void createObject(Document doc) throws Exception
>  {
>   JAXBContext jc = JAXBContext.newInstance("wozObject.request");
>   Unmarshaller u = jc.createUnmarshaller();
>   Object o = u.unmarshal( doc );
>  }
>
>  static Document saveAndReload(Document doc) throws Exception
>  {
>   String fileName = "root.xml";
>   PrintWriter out = new PrintWriter(new FileWriter(fileName, false));
>   out.println(doc.getDocumentElement());
>   out.close();
>
>   DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
>   dbf.setNamespaceAware(true);
>   DocumentBuilder db = dbf.newDocumentBuilder();
>   doc = db.parse(new File(fileName));
>   return doc;
>  }
> }
> -----------------------------------------
>
> Regards,
> David
>