KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > parser > dom > XercesDOMParserDriver


1 /*
2  * Japex ver. 0.1 software ("Software")
3  *
4  * Copyright, 2004-2005 Sun Microsystems, Inc. All Rights Reserved.
5  *
6  * This Software is distributed under the following terms:
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, is permitted provided that the following conditions are met:
10  *
11  * Redistributions of source code must retain the above copyright notice,
12  * this list of conditions and the following disclaimer.
13  *
14  * Redistribution in binary form must reproduce the above copyright notice,
15  * this list of conditions and the following disclaimer in the
16  * documentation and/or other materials provided with the distribution.
17  *
18  * Neither the name of Sun Microsystems, Inc., 'Java', 'Java'-based names,
19  * nor the names of contributors may be used to endorse or promote products
20  * derived from this Software without specific prior written permission.
21  *
22  * The Software is provided "AS IS," without a warranty of any kind. ALL
23  * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING
24  * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
25  * PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS
26  * SHALL NOT BE LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY LICENSEE
27  * AS A RESULT OF OR RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE
28  * SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE
29  * LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT,
30  * SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED
31  * AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR
32  * INABILITY TO USE SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
33  * POSSIBILITY OF SUCH DAMAGES.
34  *
35  * You acknowledge that the Software is not designed, licensed or intended
36  * for use in the design, construction, operation or maintenance of any
37  * nuclear facility.
38  */

39
40 package parser.dom;
41
42 import java.io.File JavaDoc;
43 import java.io.ByteArrayInputStream JavaDoc;
44 import java.io.FileInputStream JavaDoc;
45 import java.io.IOException JavaDoc;
46
47 import javax.xml.parsers.DocumentBuilder JavaDoc;
48 import org.w3c.dom.Document JavaDoc;
49 import com.sun.japex.*;
50 import com.sun.org.apache.xerces.internal.parsers.DOMParser;
51 import org.w3c.dom.NamedNodeMap JavaDoc;
52 import org.w3c.dom.Node JavaDoc;
53 import org.w3c.dom.NodeList JavaDoc;
54 import org.xml.sax.InputSource JavaDoc;
55
56 public class XercesDOMParserDriver extends JapexDriverBase {
57
58     ByteArrayInputStream JavaDoc _inputStream;
59     
60     DocumentBuilder JavaDoc _docBuilder;
61     DOMParser _parser;
62         
63     public void initializeDriver() {
64         try {
65             _parser = new DOMParser();
66             _parser.setFeature("http://xml.org/sax/features/namespaces", true);
67             _parser.setFeature("http://apache.org/xml/features/dom/defer-node-expansion", false);
68         } catch (Exception JavaDoc e) {
69             e.printStackTrace();
70             try { Thread.currentThread().sleep(5000); } catch (Exception JavaDoc ee) {}
71         }
72     }
73     
74     public void prepare(TestCase testCase) {
75         String JavaDoc xmlFile = testCase.getParam("xmlfile");
76         if (xmlFile == null) {
77             throw new RuntimeException JavaDoc("xmlfile not specified");
78         }
79         // Load file into byte array to factor out IO
80
try {
81             // TODO must use URL here
82
FileInputStream JavaDoc fis = new FileInputStream JavaDoc(new File JavaDoc(xmlFile));
83             byte[] xmlFileByteArray = com.sun.japex.Util.streamToByteArray(fis);
84             _inputStream = new ByteArrayInputStream JavaDoc(xmlFileByteArray);
85             fis.close();
86         }
87         catch (IOException JavaDoc e) {
88             e.printStackTrace();
89         }
90
91     }
92     
93     public void warmup(TestCase testCase) {
94         try {
95             _inputStream.reset();
96             _parser.parse(new InputSource JavaDoc(_inputStream));
97             Document JavaDoc d = _parser.getDocument();
98             // traverse(d);
99
}
100         catch (Exception JavaDoc e) {
101             e.printStackTrace();
102         }
103     }
104     
105     public void run(TestCase testCase) {
106         try {
107             _inputStream.reset();
108             _parser.parse(new InputSource JavaDoc(_inputStream));
109             Document JavaDoc d = _parser.getDocument();
110             // traverse(d);
111
}
112         catch (Exception JavaDoc e) {
113             e.printStackTrace();
114         }
115     }
116     
117     public void finish(TestCase testCase) {
118     }
119     
120     public void terminateDriver() {
121     }
122     
123     public final void traverse(Node JavaDoc n) {
124         Object JavaDoc o = n.getNodeValue();
125         
126         if (n.hasAttributes()) {
127             NamedNodeMap JavaDoc nnm = n.getAttributes();
128             for (int i = 0; i < nnm.getLength(); i++) {
129                 Node JavaDoc an = nnm.item(i);
130                 o = an.getNodeValue();
131             }
132         }
133         
134         if (n.hasChildNodes()) {
135             NodeList JavaDoc nl = n.getChildNodes();
136             for (int i = 0; i < nl.getLength(); i++) {
137                 traverse(nl.item(i));
138             }
139         }
140     }
141 }
142
Popular Tags