Re: can not get nsidomdocument from html file using mozilla browser instance

Seb <[email protected]> Wed, 17 Sep 2008 02:45:19 -0700 (PDT)
Newsgroups gmane.comp.mozilla.devel.java
Organization http://groups.google.com
Message-ID <882ad45c-d49b-40a3-9b90-3234099711de@m44g2000hsc.googlegroups.com>
On 9 sep, 17:37, New <[email protected]> wrote:
> On Sep 5, 9:26 am, "Grant Gayed" <[email protected]> wrote:
>
>
>
> > Are you just asking about the "while (!shell.isDisposed())" ?  If so, then
> > change it to something like "while (!completed)", and set "completed" to
> > true wherever appropriate (eg.- after the tags have been written to stdout).
> > Your code worked for me once I did this and uncommented some of its lines.
>
> > If this is not what you were asking then please clarify what is not working
> > for you in the context of eclipse.
>
> > Grant
>
> > "New" <[email protected]> wrote in message
>
> >news:f6955c18-5579-417d-95c0-8a00386de95c@v16g2000prc.googlegroups.com...
>
> > > The following java works as java appliation. It spits out all tags in
> > > the HTML file. When I integrate the app with eclipse application,  the
> > > app does not pass the while loop.   Does anybody provide me a sample
> > > code to get nsIDOMDocument from HTML file using Mozilla browser
> > > instance.
>
> > > public class TestSwtBrowser {
> > >     public static void main(String[] args)  {
>
> > >     //Display display = new Display();
> > >     Display display = Display.getDefault();
> > >         final Shell shell = new Shell(display);
> > >     //final Shell shell = new Shell();
> > > final Browser browser;
>
> > >         browser = new Browser(shell, SWT.MOZILLA);
>
> > >         if (browser.setUrl("C:\\eclipse\\eclipse\\TestHtml\\html\
> > > \forms_e.html")) {
>
> > >               browser.addProgressListener(new ProgressListener() {
> > >                public void changed(ProgressEvent event) {
> > >                 //Browser browser = (Browser)event.getSource();
> > >                 nsIWebBrowser webBrowser =
> > > (nsIWebBrowser)browser.getWebBrowser();
> > >             if (webBrowser == null) {
> > >             System.out.println("Could not get the nsIWebBrowser
> > > from the Browser widget");
>
> > >             }
> > >             nsIDOMWindow window = webBrowser.getContentDOMWindow();
> > >             nsIDOMDocument document = window.getDocument();
>
> > >                     //nsIDOMDocument document = browser.getDocument();
>
> > >                     System.out.println(document);
> > >                     //recursive call for displaying all children
> > >         System.out.println("before recursive call for displaying
> > > all children");
>
> > >         nsIDOMNode fNode = ((nsIDOMNode) document).getFirstChild();
> > >         System.out.println("First Node="+fNode.getNodeName());
> > >         displayAllChildren(fNode);
> > >         nsIDOMNode lNode = ((nsIDOMNode) document).getLastChild();
> > >         System.out.println("Last Node="+lNode.getNodeName());
> > >         System.out.println("after recursive call for displaying all
> > > children");
> > >                 }
>
> > >                 public void completed(ProgressEvent event) {
> > >                  /* nsIWebBrowser webBrowser =
> > > (nsIWebBrowser)browser.getWebBrowser();
> > >             if (webBrowser == null) {
> > >             System.out.println("Could not get the nsIWebBrowser
> > > from the Browser widget");
>
> > >             }
> > >             nsIDOMWindow window = webBrowser.getContentDOMWindow();
> > >             nsIDOMDocument document = window.getDocument();
>
> > >                     //nsIDOMDocument document = browser.getDocument();
>
> > >                     System.out.println(document);*/
>
> > >                     //nsIDOMElement rootElement =
> > > document.getDocumentElement();
> > >                     //printElement(rootElement);
> > >                 }
> > >             } );
>
> > >         }
>
> > >         while (!shell.isDisposed()) {
> > >             if (!display.readAndDispatch()) {
> > >                 display.sleep();
> > >             }
> > >         }
> > >         display.dispose();
>
> > >     }
>
> > >     private static void displayAllChildren(nsIDOMNode node) {
> > > nsIDOMNodeList nsiNodelist =   node.getChildNodes();
> > > long size = nsiNodelist.getLength();
> > > for (long c = 0; c < size; ++c) {
> > > nsIDOMNode child = nsiNodelist.item(c);
> > > System.out.println("tagName="+child.getNodeName());
> > > if (child.hasChildNodes()) {
> > >   displayAllChildren(child);
> > > }
> > >     }
> > > }- Hide quoted text -
>
> > - Show quoted text -
>
> I did not clearly expalain my problem.  My concern is when the
> displaly disposes, the nsIDOMDocument loses the referrence. Looks like
> nsiDOMdocument is tied to the display of mozilla instance..if I want
> to do manipulation of the nsidomdocuement, i have to write logic in
> either completed or changed event .   Now my problem has been
> resolved. Thanks grant.

Hi,

I have exactly same problem, could you give us the code who working
well ?

Seb