KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > hp > hpl > jena > util > xml > SimpleXMLPathElement


1 /*****************************************************************************
2  * Source code information
3  * -----------------------
4  * Original author Ian Dickinson, HP Labs Bristol
5  * Author email ian.dickinson@hp.com
6  * Package Jena 2
7  * Web http://sourceforge.net/projects/jena/
8  * Created 04-Dec-2003
9  * Filename $RCSfile: SimpleXMLPathElement.java,v $
10  * Revision $Revision: 1.5 $
11  * Release status $State: Exp $
12  *
13  * Last modified on $Date: 2005/02/21 12:20:40 $
14  * by $Author: andy_seaborne $
15  *
16  * (c) Copyright 2001, 2002, 2003, 2004, 2005 Hewlett-Packard Development Company, LP
17  * [See end of file]
18  *****************************************************************************/

19
20 // Package
21
///////////////
22
package com.hp.hpl.jena.util.xml;
23
24
25 // Imports
26
///////////////
27
import java.util.*;
28
29 import org.w3c.dom.*;
30
31
32 /**
33  * <p>
34  * An implementation of a simple XML path component that handles named elements.
35  * </p>
36  *
37  * @author Ian Dickinson, HP Labs (<a HREF="mailto:Ian.Dickinson@hp.com" >email</a>)
38  * @version CVS $Id: SimpleXMLPathElement.java,v 1.5 2005/02/21 12:20:40 andy_seaborne Exp $
39  */

40 public class SimpleXMLPathElement
41     implements SimpleXMLPathComponent
42 {
43     // Constants
44
//////////////////////////////////
45

46     /** Constant to select all children of a node */
47     public static final String JavaDoc ALL_CHILDREN = "*";
48     
49     
50     // Static variables
51
//////////////////////////////////
52

53     // Instance variables
54
//////////////////////////////////
55

56     /** The element name we are evaluating */
57     protected String JavaDoc m_elemName;
58     
59     
60     // Constructors
61
//////////////////////////////////
62

63     /**
64      * <p>Construct a simple XML path component that selects a named
65      * element from the parent.</p>
66      * @param elemName The name of the element to extract
67      */

68     public SimpleXMLPathElement( String JavaDoc elemName ) {
69         m_elemName = elemName;
70     }
71     
72     
73     /**
74      * <p>Construct a simple XML path component that selects all child
75      * elements of the parent node.</p>
76      */

77     public SimpleXMLPathElement() {
78         m_elemName = ALL_CHILDREN;
79     }
80     
81     
82     // External signature methods
83
//////////////////////////////////
84

85     /**
86      * <p>Answer an iterator over all of the values of this path component when
87      * evaluated with respect to the given node.</p>
88      * @param node The parent node to evaluate against
89      * @return An iterator over all of the objects that correspond to evaluating
90      * this path against the given node.
91      */

92     public Iterator getAll( Node node ) {
93         // elements should occur within elements
94
if (!(node instanceof Element)) {
95             throw new IllegalArgumentException JavaDoc( "Tried to get element " + m_elemName + " from a parent node of type " + node.getClass().getName() );
96         }
97         
98         return new NodeListIterator( ((Element) node).getElementsByTagName( m_elemName ) );
99     }
100     
101     /**
102      * <p>Answer the first value for this path expression against the given node.</p>
103      * @param node The parent node to evalauate against
104      * @return The first object that corresponds to evaluating
105      * this path against the given node, or null if there is no such value
106      */

107     public Object JavaDoc getFirst( Node node ) {
108         return getAll( node ).next();
109     }
110
111
112     // Internal implementation methods
113
//////////////////////////////////
114

115     //==============================================================================
116
// Inner class definitions
117
//==============================================================================
118

119 }
120
121
122 /*
123  * (c) Copyright 2001, 2002, 2003, 2004, 2005 Hewlett-Packard Development Company, LP
124  * All rights reserved.
125  *
126  * Redistribution and use in source and binary forms, with or without
127  * modification, are permitted provided that the following conditions
128  * are met:
129  * 1. Redistributions of source code must retain the above copyright
130  * notice, this list of conditions and the following disclaimer.
131  * 2. Redistributions in binary form must reproduce the above copyright
132  * notice, this list of conditions and the following disclaimer in the
133  * documentation and/or other materials provided with the distribution.
134  * 3. The name of the author may not be used to endorse or promote products
135  * derived from this software without specific prior written permission.
136  *
137  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
138  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
139  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
140  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
141  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
142  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
143  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
144  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
145  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
146  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
147  */

148
Popular Tags