athanach
11-23-2007, 07:03 AM
I am running the code bellow in NetBeans 5.5.1 and it cant take the input argument that i give?
Any suggestions?
import java.io.File;
// DOM imports
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.traversal.DocumentTraversal;
import org.w3c.dom.traversal.NodeFilter;
import org.w3c.dom.traversal.NodeIterator;
// Vendor parser
import org.apache.xerces.parsers.DOMParser;
/**
* <b><code>ItemSearcher</code></b> shows how the DOM Level 2 Traversal
* module can be used for searching through a document.
*/
public class ItemSearcher {
/** The default namespace for the document to search through */
private String docNS = "http://www.oreilly.com/javaxml2";
/**
* <p>This method takes a file, and searches it for specific
* pieces of data using DOM traversal.</p>
*
* @param filename name of XML file to search through.
* @throws <code>Exception</code> - generic problem handling.
*/
public void search(String filename) throws Exception {
// Parse into a DOM tree
File file = new File(filename);
DOMParser parser = new DOMParser();
parser.parse(file.toURL().toString());
Document doc = parser.getDocument();
// Get node to start iterating with
Element root = doc.getDocumentElement();
NodeList descriptionElements =
root.getElementsByTagNameNS(docNS, "description");
Element description = (Element)descriptionElements.item(0);
// Get a NodeIterator
NodeIterator i = ((DocumentTraversal)doc)
.createNodeIterator(description, NodeFilter.SHOW_ALL,
new FormattingNodeFilter(), true);
Node n;
while ((n = i.nextNode()) != null) {
System.out.println("Search phrase found: '" + n.getNodeValue() + "'");
}
}
/**
* <p>Provide a static entry point.</p>
*/
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("No item files to search through specified.");
return;
}
try {
ItemSearcher searcher = new ItemSearcher();
for (int i=0; i<args.length; i++) {
System.out.println("Processing file: " + args[i]);
searcher.search(args[i]);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class FormattingNodeFilter implements NodeFilter {
public short acceptNode(Node n) {
if (n.getNodeType() == Node.TEXT_NODE) {
Node parent = n.getParentNode();
if ((parent.getNodeName().equalsIgnoreCase("b")) ||
(parent.getNodeName().equalsIgnoreCase("i"))) {
return FILTER_ACCEPT;
}
}
// If we got here, not interested
return FILTER_SKIP;
}
}
Any suggestions?
import java.io.File;
// DOM imports
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.traversal.DocumentTraversal;
import org.w3c.dom.traversal.NodeFilter;
import org.w3c.dom.traversal.NodeIterator;
// Vendor parser
import org.apache.xerces.parsers.DOMParser;
/**
* <b><code>ItemSearcher</code></b> shows how the DOM Level 2 Traversal
* module can be used for searching through a document.
*/
public class ItemSearcher {
/** The default namespace for the document to search through */
private String docNS = "http://www.oreilly.com/javaxml2";
/**
* <p>This method takes a file, and searches it for specific
* pieces of data using DOM traversal.</p>
*
* @param filename name of XML file to search through.
* @throws <code>Exception</code> - generic problem handling.
*/
public void search(String filename) throws Exception {
// Parse into a DOM tree
File file = new File(filename);
DOMParser parser = new DOMParser();
parser.parse(file.toURL().toString());
Document doc = parser.getDocument();
// Get node to start iterating with
Element root = doc.getDocumentElement();
NodeList descriptionElements =
root.getElementsByTagNameNS(docNS, "description");
Element description = (Element)descriptionElements.item(0);
// Get a NodeIterator
NodeIterator i = ((DocumentTraversal)doc)
.createNodeIterator(description, NodeFilter.SHOW_ALL,
new FormattingNodeFilter(), true);
Node n;
while ((n = i.nextNode()) != null) {
System.out.println("Search phrase found: '" + n.getNodeValue() + "'");
}
}
/**
* <p>Provide a static entry point.</p>
*/
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("No item files to search through specified.");
return;
}
try {
ItemSearcher searcher = new ItemSearcher();
for (int i=0; i<args.length; i++) {
System.out.println("Processing file: " + args[i]);
searcher.search(args[i]);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
class FormattingNodeFilter implements NodeFilter {
public short acceptNode(Node n) {
if (n.getNodeType() == Node.TEXT_NODE) {
Node parent = n.getParentNode();
if ((parent.getNodeName().equalsIgnoreCase("b")) ||
(parent.getNodeName().equalsIgnoreCase("i"))) {
return FILTER_ACCEPT;
}
}
// If we got here, not interested
return FILTER_SKIP;
}
}