Query DOM node value : Browser HTML « SWT JFace Eclipse « Java






Query DOM node value

Query DOM node value


/*
 * Browser example snippet: query DOM node value
 *
 * For a list of all SWT example snippets see
 * http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/platform-swt-home/dev.html#snippets
 */
import org.eclipse.swt.SWT;
import org.eclipse.swt.browser.Browser;
import org.eclipse.swt.browser.ProgressEvent;
import org.eclipse.swt.browser.ProgressListener;
import org.eclipse.swt.browser.StatusTextEvent;
import org.eclipse.swt.browser.StatusTextListener;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;

public class Snippet160 {
  public static void main(String[] args) {
    final String html = "<html><title>Snippet</title><body><p id='myid'>Best Friends</p><p id='myid2'>Cat and Dog</p></body></html>";
    Display display = new Display();
    final Shell shell = new Shell(display);
    shell.setLayout(new FillLayout());
    final Browser browser = new Browser(shell, SWT.NONE);
    browser.addStatusTextListener(new StatusTextListener() {
      public void changed(StatusTextEvent event) {
        browser.setData("query", event.text);
      }
    });
    browser.addProgressListener(new ProgressListener() {
      public void changed(ProgressEvent event) {
      }

      public void completed(ProgressEvent event) {
        /*
         * Use JavaScript to query the desired node content through the
         * Document Object Model
         * 
         * Assign result to the window property status to pass the
         * result to the StatusTextListener This trick is required since
         * <code>execute</code> does not return the <code>String</code>
         * directly.
         */
        boolean result = browser
            .execute("window.status=document.getElementById('myid').childNodes[0].nodeValue;");
        if (!result) {
          /*
           * Script may fail or may not be supported on certain
           * platforms.
           */
          System.out.println("Script was not executed.");
          return;
        }
        String value = (String) browser.getData("query");
        System.out.println("Node value: " + value);
      }
    });
    /* Load an HTML document */
    browser.setText(html);
    shell.open();
    while (!shell.isDisposed()) {
      if (!display.readAndDispatch())
        display.sleep();
    }
    display.dispose();
  }
}

           
       








Related examples in the same category

1.Modify HTML title tagModify HTML title tag
2.HTML ExplorerHTML Explorer
3.Web Browser Composite
4.Another SWT Browser DemoAnother SWT Browser Demo
5.SWT Browser ExampleSWT Browser Example
6.SWT Browser
7.Implements a web browser 2Implements a web browser 2
8.Implements a web browserImplements a web browser
9.Uses a web browser to displayUses a web browser to display
10.Render HTML that includes relative links from memoryRender HTML that includes relative links from memory
11.Bring up a browserBring up a browser
12.Another SWT BrowserAnother SWT Browser
13.HTML Explorer based on JFaceHTML Explorer based on JFace