Hello, I have a problem with using xpath function "matches". I gues it's the regexp problem, but I have tried almost everything. Calling function "contains" works fine, but calling "matches" throws org.mozilla.xpcom.XPCOMException: The function "evaluate" returned an error condition (0x805b0033). I cant find detail of the exception enywhere. I am using xulrunner-sdk-1.9.1.3-win32. Are all functions from http://www.w3.org/2005/xpath-functions supported? When you call "xpath.evaluate" with "expr" in the snippet below, it works, but using "expr2" throws exception. Any ideas? Thanks for reply.
Here's my snippet public class XPath { static Browser browser; public static void main(String[] args) { Display display = new Display(); Shell shell = new Shell(display); shell.setLayout(new GridLayout(2, true)); shell.setText("Use Mozilla's Design Mode"); try { browser = new Browser(shell, SWT.MOZILLA); } catch (SWTError e) { System.out.println("Could not instantiate Browser: " + e.getMessage()); return; } browser.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true, 2, 1)); Button searchButton = new Button(shell, SWT.PUSH); searchButton.setText("Search"); searchButton.addListener(SWT.Selection, new Listener() { public void handleEvent(Event event) { search(); } }); browser.setJavascriptEnabled(false); browser.setUrl("http://www.google.com"); shell.setSize(400, 400); shell.open(); while (!shell.isDisposed()) { if (!display.readAndDispatch()) { display.sleep(); } } display.dispose(); } public static boolean search() { nsIWebBrowser webBrowser = (nsIWebBrowser) browser.getWebBrowser(); if (webBrowser == null) { System.out.println("Could not get the nsIWebBrowser from the Browser widget"); return false; } nsIDOMWindow window = webBrowser.getContentDOMWindow(); nsIDOMDocument document = window.getDocument(); nsIDOMXPathEvaluator xpath = (nsIDOMXPathEvaluator) document.queryInterface(nsIDOMXPathEvaluator.NS_IDOMXPATHEVALUATOR_IID); nsIDOMXPathNSResolver res = xpath.createNSResolver(document); res.lookupNamespaceURI("http://www.w3.org/2005/xpath- functions"); String expr = "//input[contains(@name,'q')]"; String expr2 = "//input[matches(@name,\"[q]{1}\")]"; nsISupports obj = xpath.evaluate(expr2, document, res, nsIDOMXPathResult.UNORDERED_NODE_ITERATOR_TYPE, null); nsIDOMXPathResult result = (nsIDOMXPathResult) obj.queryInterface(nsIDOMXPathResult.NS_IDOMXPATHRESULT_IID); nsIDOMNode node; int i = 0; while((node = result.iterateNext()) != null) { System.out.println(node.getNodeName()); System.out.println(i++); } return true; } } _______________________________________________ dev-embedding mailing list dev-embedding@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-embedding