Copyright 2001, Gerry de Koning
/*
* Copyright 2001, Gerry de Koning
*
* This program is for educational purposes only.
* It is an example only, and not designed to be
* fit for any other purpose.
*/
import org.w3c.dom.*;
import org.apache.xerces.parsers.*;
import org.apache.xml.serialize.*;
import org.xml.sax.InputSource;
import java.io.*;
import java.text.*;
public class DOMDemo {
public static void main (String[] args) throws Exception {
if (args.length != 2) {
System.err.println(
"Usage: java DOMDemo <inFile> <outFile>");
System.exit(-1);
}
// Get a number formatter, we'll need it later
NumberFormat fmt = NumberFormat.getInstance();
// Get a DOM parser and parse the input XML file
DOMParser parser = new DOMParser();
parser.parse(new InputSource(new FileReader(args[0])));
// Find all the <C> elements
Document doc = parser.getDocument();
NodeList nodes = doc.getElementsByTagName("C");
// Process each <C> element found
for(int i=0; i < nodes.getLength(); i++ ) {
Element thisNode = (Element) nodes.item(i);
Node parent = thisNode.getParentNode();
// Get temperature and convert to Fahrenheit
String tempC = thisNode.getFirstChild().getNodeValue();
double tC = Double.parseDouble(tempC);
double tF = 32.0 + (1.8 * tC);
fmt.setMaximumFractionDigits(
(tempC.indexOf(".") != -1) ? 1 : 0);
String tempF = fmt.format(tF);
// Create a new node to hold
Element newNode = doc.createElement("F");
newNode.appendChild(doc.createTextNode(tempF));
parent.appendChild(newNode);
}
// Write out the DOM to a new XML file
XMLSerializer out = new XMLSerializer(
new FileWriter(args[1]),
new OutputFormat("XML", "utf-8",
true));
out.serialize(doc);
}
|