File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes XML and Related Technologies and the fly likes Using XML in search criteria rather than hard coding it Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Engineering » XML and Related Technologies
Bookmark "Using XML in search criteria rather than hard coding it " Watch "Using XML in search criteria rather than hard coding it " New topic
Author

Using XML in search criteria rather than hard coding it

Paul Carron
Greenhorn

Joined: Jul 25, 2007
Posts: 3
I have the following program:

import java.io.File;
import org.w3c.dom.*;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

public class FindFile{

public static void main (String args []){

try {

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse (new File("Files.xml"));

// normalize text representation
doc.getDocumentElement ().normalize ();
System.out.println ("Root element of the doc is : " +
doc.getDocumentElement().getNodeName());

//number of files
NodeList fileDetails = doc.getElementsByTagName("file_details");
int totalFiles = fileDetails.getLength();
System.out.println("Total no of files : " + totalFiles);

for(int s=0; s<fileDetails.getLength() ; s++){


Node countryNode = fileDetails.item(s);
if(countryNode.getNodeType() == Node.ELEMENT_NODE){


Element fileElement = (Element)countryNode;

//Get the country each file applys to
NodeList countryList = fileElement.getElementsByTagName("country");
Element countryNameElement = (Element)countryList.item(0);

NodeList textCountryList = countryNameElement.getChildNodes();
System.out.println("Country Name : " +
((Node)textCountryList.item(0)).getNodeValue().trim());

//Get the letter each file begins with
NodeList fileBeginsWith = fileElement.getElementsByTagName("starts_with");
Element lastNameElement = (Element)fileBeginsWith.item(0);

NodeList textBeginsWithList = lastNameElement.getChildNodes();
System.out.println("File Name Begins With : " +
((Node)textBeginsWithList.item(0)).getNodeValue().trim());

//find the extension type
NodeList extensionType = fileElement.getElementsByTagName("extension");
Element extensionElement = (Element)extensionType.item(0);

NodeList textExtensionList = extensionElement.getChildNodes();
System.out.println("The extension type is : " +
((Node)textExtensionList.item(0)).getNodeValue().trim());


}//end of if clause

}//end of for loop with s var

}catch (SAXParseException err) {
System.out.println ("** Parsing error" + ", line "
+ err.getLineNumber () + ", uri " + err.getSystemId ());
System.out.println(" " + err.getMessage ());

}catch (SAXException e) {
Exception x = e.getException ();
((x == null) ? e : x).printStackTrace ();

}catch (Throwable t) {
t.printStackTrace ();
}

//Was commented out
System.exit (0);
}
}



It reads the XML below:

<?xml version="1.0" encoding="UTF-8"?>

<file>
<file_details>
<country>Ireland</country>
<starts_with>A</starts_with>
<extension>.txt</extension>
<message>Irish Financial Regulator</message>
</file_details>
</file>

I also have this program which finds the latest modified file in a folder:


import java.io.File;


public class FindLatestFile {


public static File getLatest(File thisDir){
long latestModDate = -1;
File latestFile = null;
File[] fileList = thisDir.listFiles();
for(int i=0; i >< fileList.length; i++){
File file = fileList[i];
if (file.lastModified() > latestModDate & (file.getName().startsWith("A") & file.getName().endsWith(".txt"))) {
latestModDate = file.lastModified();
latestFile = file;
}
}
return latestFile;

}
}


What I want to do is to use my FindLatestFile program but to in some way incorporate my code from FindFile so that instead of hard coding the search criteria I want to include in my search, the criteria will be read from the XML.

I hope that is clear. If not please free to ask questions.

Any help would be greatly appreciated.
William Brogden
Author and all-around good cowpoke
Rancher

Joined: Mar 22, 2000
Posts: 12761
    
    5
Creating search expressions dynamically from text input sounds to me like a job for the XPath API. Java standard library since 1.5 contains the javax.xml.xpath package which provides for evaluation of XPath expressions.

I wrote this introductory article on XPath in Java 1.5.

E. Harolds chapter on using XPath is available online.

Bill
Paul Carron
Greenhorn

Joined: Jul 25, 2007
Posts: 3
Cheers. Sorted now.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Using XML in search criteria rather than hard coding it
 
Similar Threads
Display contents in GUI format
help with web service to display xml file contents using netbeans
how to read this kind of xml file?
Unable to get the correct data from the XML file
parsing XML in java