getValue() returns the XPath string value of a node
toXML() returns a String containing the XML form of the node
import java.io.*;
import nu.xom.*;
public class PropertyPrinter {
private Writer out;
public PropertyPrinter(Writer out) {
if (out == null) {
throw new NullPointerException("Writer must be non-null.");
}
this.out = out;
}
public PropertyPrinter() {
this(new OutputStreamWriter(System.out));
}
private int nodeCount = 0;
public void writeNode(Node node) throws IOException {
if (node == null) {
throw new NullPointerException("Node must be non-null.");
}
if (node instanceof Document) {
// starting a new document, reset the node count
nodeCount = 1;
}
String type = node.getClass().getName(); // never null
String value = node.getValue();
String name = null;
String localName = null;
String uri = null;
String prefix = null;
if (node instanceof Element) {
Element element = (Element) node;
name = element.getQualifiedName();
localName = element.getLocalName();
uri = element.getNamespaceURI();
prefix = element.getNamespacePrefix();
}
else if (node instanceof Attribute) {
Element element = (Element) node;
name = element.getQualifiedName();
localName = element.getLocalName();
uri = element.getNamespaceURI();
prefix = element.getNamespacePrefix();
}
StringBuffer result = new StringBuffer();
result.append("Node " + nodeCount + ":\r\n");
result.append(" Type: " + type + "\r\n");
if (name != null) {
result.append(" Name: " + name + "\r\n");
}
if (localName != null) {
result.append(" Local Name: " + localName + "\r\n");
}
if (prefix != null) {
result.append(" Prefix: " + prefix + "\r\n");
}
if (uri != null) {
result.append(" Namespace URI: " + uri + "\r\n");
}
if (value != null) {
result.append(" Value: " + value + "\r\n");
}
out.write(result.toString());
out.write("\r\n");
out.flush();
nodeCount++;
}
public static void main(String[] args) throws Exception {
Builder builder = new Builder();
for (int i = 0; i < args.length; i++) {
PropertyPrinter p = new PropertyPrinter();
File f = new File(args[i]);
Document doc = builder.build(f);
p.writeNode(doc);
}
}
}