KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > gargoylesoftware > htmlunit > html > xpath > HtmlUnitXPath


1 /*
2  * Copyright (c) 2002, 2005 Gargoyle Software Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *
7  * 1. Redistributions of source code must retain the above copyright notice,
8  * this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright notice,
10  * this list of conditions and the following disclaimer in the documentation
11  * and/or other materials provided with the distribution.
12  * 3. The end-user documentation included with the redistribution, if any, must
13  * include the following acknowledgment:
14  *
15  * "This product includes software developed by Gargoyle Software Inc.
16  * (http://www.GargoyleSoftware.com/)."
17  *
18  * Alternately, this acknowledgment may appear in the software itself, if
19  * and wherever such third-party acknowledgments normally appear.
20  * 4. The name "Gargoyle Software" must not be used to endorse or promote
21  * products derived from this software without prior written permission.
22  * For written permission, please contact info@GargoyleSoftware.com.
23  * 5. Products derived from this software may not be called "HtmlUnit", nor may
24  * "HtmlUnit" appear in their name, without prior written permission of
25  * Gargoyle Software Inc.
26  *
27  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
28  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
29  * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARGOYLE
30  * SOFTWARE INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
31  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
33  * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
36  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37  */

38 package com.gargoylesoftware.htmlunit.html.xpath;
39
40 import org.jaxen.BaseXPath;
41 import org.jaxen.JaxenException;
42 import org.jaxen.Navigator;
43
44 import com.gargoylesoftware.htmlunit.html.DomNode;
45
46 /**
47  * Jaxen XPath adapter implementation for the HtmlUnit DOM model
48  *
49  * <p>This is the main entry point for matching an XPath against a HU-DOM
50  * tree. You create a compiled XPath object, then match it against one or
51  * more context nodes using the {@link BaseXPath#selectNodes(Object)}
52  * method, as in the following example:</p>
53  *
54  * <pre>
55  * XPath path = new HtmlUnitXPath("a/b/c");
56  * List results = path.selectNodes(domNode);
57  * </pre>
58  *
59  * @see org.jaxen.BaseXPath
60  *
61  * @version $Revision: 100 $
62  * @author <a HREF="mailto:cse@dynabean.de">Christian Sell</a>
63  * @author Mike Bowler
64  * @author Marc Guillemot
65  */

66 public class HtmlUnitXPath extends BaseXPath {
67
68     private static final long serialVersionUID = -3902959929710269843L;
69     private final String JavaDoc xpath_;
70
71     /**
72      * Construct given an XPath expression string.
73      * @param xpathExpr The XPath expression.
74      * @throws org.jaxen.JaxenException if there is a syntax error while
75      * parsing the expression.
76      */

77     public HtmlUnitXPath(final String JavaDoc xpathExpr) throws JaxenException {
78         this( xpathExpr, DocumentNavigator.instance );
79     }
80
81     /**
82      * Construct given an XPath expression string and a Document Navigator.
83      * @param xpathExpr The XPath expression.
84      * @param navigator the document navigator to use for evaluation
85      * @throws org.jaxen.JaxenException if there is a syntax error while
86      * parsing the expression.
87      */

88     public HtmlUnitXPath(final String JavaDoc xpathExpr, final Navigator navigator) throws JaxenException {
89         super(xpathExpr, navigator);
90         xpath_ = xpathExpr;
91     }
92     
93     
94     /**
95      * Builds a navigator that will see the provided node as the "document"
96      * and only navigate in its children.<br/>
97      * The returned navigator can only be used to evaluate xpath expressions on nodes
98      * of the same document as the provided one. The behavior when used on an other document is undefined.
99      * @param node the node that should be considered as the root by the navigator
100      * @return a navigator
101      */

102     public static Navigator buildSubtreeNavigator(final DomNode node) {
103         return new NodeRelativeNavigator(node);
104     }
105     
106     /**
107      * Gives the xpath expression provided to c'tor.
108      * @see org.jaxen.BaseXPath#toString()
109      * @return the xpath expression provided to c'tor.
110      */

111     public String JavaDoc toString() {
112         return xpath_;
113     }
114 }
115
Popular Tags